Ответ 1
var lat = homeMarker.getPosition().lat();
var lng = homeMarker.getPosition().lng();
См. Документы google.maps.LatLng и google.maps.Marker getPosition()
.
Я использую API Карт Google. И я использую код ниже, чтобы получить координаты маркера.
var lat = homeMarker.getPosition().$a;
var lng = homeMarker.getPosition().ab;
Все отлично работает с приложением, которое я создал с помощью Google Maps. Но я протестировал его сегодня, и у меня возникли проблемы с получением правильных координат. Только чтобы узнать, что код выше становится неопределенным. После того, как я console.log(homeMarker.getPosition()), я обнаружил, что теперь это переменные, которые они использовали для координат.
var lat = homeMarker.getPosition().ab;
var lng = homeMarker.getPosition().cb;
Я не буду спрашивать, почему Google Maps действует таким образом, но вы также можете включить его в свой ответ. Мой вопрос в том, как правильно получить координаты без изменения моего кода каждый раз, когда карты Google меняют переменные, которые они используют.
var lat = homeMarker.getPosition().lat();
var lng = homeMarker.getPosition().lng();
См. Документы google.maps.LatLng и google.maps.Marker getPosition()
.
Еще один альтернативный вариант
var map = new google.maps.Map(document.getElementById('map_canvas'), {
zoom: 1,
center: new google.maps.LatLng(35.137879, -82.836914),
mapTypeId: google.maps.MapTypeId.ROADMAP
});
var myMarker = new google.maps.Marker({
position: new google.maps.LatLng(47.651968, 9.478485),
draggable: true
});
google.maps.event.addListener(myMarker, 'dragend', function (evt) {
document.getElementById('current').innerHTML = '<p>Marker dropped: Current Lat: ' + evt.latLng.lat().toFixed(3) + ' Current Lng: ' + evt.latLng.lng().toFixed(3) + '</p>';
});
google.maps.event.addListener(myMarker, 'dragstart', function (evt) {
document.getElementById('current').innerHTML = '<p>Currently dragging marker...</p>';
});
map.setCenter(myMarker.position);
myMarker.setMap(map);
и html файл
<body>
<section>
<div id='map_canvas'></div>
<div id="current">Nothing yet...</div>
</section>
</body>
Кроме того, вы можете отображать текущую позицию прослушивателем "drag" и записывать ее в видимое или скрытое поле. Вам также может потребоваться сохранить масштабирование. Здесь скопируйте и вставьте из рабочего инструмента:
function map_init() {
var lt=48.451778;
var lg=31.646305;
var myLatlng = new google.maps.LatLng(lt,lg);
var mapOptions = {
center: new google.maps.LatLng(lt,lg),
zoom: 6,
mapTypeId: google.maps.MapTypeId.ROADMAP
};
var map = new google.maps.Map(document.getElementById('map'),mapOptions);
var marker = new google.maps.Marker({
position:myLatlng,
map:map,
draggable:true
});
google.maps.event.addListener(
marker,
'drag',
function() {
document.getElementById('lat1').innerHTML = marker.position.lat().toFixed(6);
document.getElementById('lng1').innerHTML = marker.position.lng().toFixed(6);
document.getElementById('zoom').innerHTML = mapObject.getZoom();
// Dynamically show it somewhere if needed
$(".x").text(marker.position.lat().toFixed(6));
$(".y").text(marker.position.lng().toFixed(6));
$(".z").text(map.getZoom());
}
);
}