52

GoogleMapsAPIを使用しています。そして、マーカーの座標を取得するために以下のコードを使用しています。

var lat = homeMarker.getPosition().$a;
var lng = homeMarker.getPosition().ab;

私がGoogleマップを使用して作成したアプリでは、すべてが正常に機能しています。しかし、今日それをテストしたところ、正しい座標を取得するのに問題がありました。上記のコードが未定義になっていることを発見するためだけに。console.log(homeMarker.getPosition())を実行した後、これが座標に使用される変数になっていることを発見しました。

var lat = homeMarker.getPosition().ab;
var lng = homeMarker.getPosition().cb;

Googleマップがこのように機能する理由は尋ねませんが、回答に含めることもできます。私の質問は、グーグルマップが使用している変数を変更するたびにコードを変更せずに座標を正しく取得するにはどうすればよいかということです。

4

3 に答える 3

129
var lat = homeMarker.getPosition().lat();
var lng = homeMarker.getPosition().lng();

google.maps.LatLngドキュメントとgoogle.maps.Marker を参照してくださいgetPosition()

于 2012-06-14T10:03:54.463 に答える
7

もう1つの代替オプション

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>
于 2016-11-07T12:34:18.387 に答える
5

また、リスナーを「ドラッグ」して現在位置を表示し、表示フィールドまたは非表示フィールドに書き込むことができます。ズームを保存する必要がある場合もあります。作業ツールからのコピー&ペーストは次のとおりです。

            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());

                }
            );                  
            }
于 2017-06-09T14:59:42.067 に答える