0

地図に追加した緯度と経度を見つけようとしています。私はすでに多くのことを試しましたが、理解できません。

ここに私の完全なコードがあります

function initialize() {
  var mapOptions = {
    zoom: 4,
    center: new google.maps.LatLng(41,29),
    mapTypeId: google.maps.MapTypeId.ROADMAP
  };
  var map = new google.maps.Map(document.getElementById('map-canvas'),
      mapOptions);

  google.maps.event.addListener(map, 'click', function(e) {
    placeMarker(e.latLng, map);
  });
}

function placeMarker(position, map) {
  var marker = new google.maps.Marker({
    position: position,
    map: map,
draggable: true
  });
  map.panTo(position);
}

google.maps.event.addDomListener(window, 'load', initialize);
4

1 に答える 1

2

超新星は正しいです。Google Maps API では、元のマーカーを保持する以外の方法でマップに追加されたマーカーを参照する方法は提供されませんgoogle.maps.Marker。簡単な解決策は、関数の外部で配列を定義し、すべてのマーカーを作成時に 1 つずつプッシュすることです。この関数は次のようになります。

(function() {
   var markers = [];
   window.addMarkerToMap(parameters, map) {
     var params = parameters || {};
     params.map = map;
     var marker = new google.maps.Marker(params);
     markers.push({ "object": marker, "lat": params.position.lat(), "long": params.position.long() });
     return marker;
   };
   window.getMarkers() {
     return markers;
   };
})();

これによりaddMarkerToMap()、署名付きのグローバル関数が得られます: parameters: Object, map: google.map. それを使用してマーカーを追加するたびに、 によって返される配列で使用できますwindow.getMarkers()。そこから、マーカーは便宜上 にobjectあり、緯度/経度座標はそれぞれlatおよびにありlongます。

于 2013-04-17T18:21:34.750 に答える