2012-06-14 9 views
25

私はGoogle Maps APIを使用しています。そして私はマーカーの座標を得るために以下のコードを使用しています。Google Maps APIでマーカーの座標を取得する

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マップがこのように機能する理由は問いませんが、あなたの回答に含めることもできます。私の質問は、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> 
+0

google.maps.event.addListener(myMarker、 'dragendイベント'、機能(EVT){... }); これは例外をスローします。 – rajkiran

2

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

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

       } 
      );     
      } 
関連する問題