Получение координат маркера в API Карт Google

Я использую 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 меняют переменные, которые они используют.

Ответ 2

Еще один альтернативный вариант

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>

Ответ 3

Кроме того, вы можете отображать текущую позицию прослушивателем "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());

                }
            );                  
            }