通过在谷歌地图上添加多个标记获得lat很长时间

时间:2013-04-17 18:11:35

标签: javascript google-maps

我正在尝试找到我在地图上添加的lat和long。我已经尝试了很多东西,但无法理解。

here is my full code

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

1 个答案:

答案 0 :(得分:2)

超新星是对的 - 谷歌地图API不提供一种方法来引用标记,只要它们以任何其他方式添加到地图,而不是保留原始google.maps.Marker。一个简单的解决方案是在函数外部定义一个数组,并在创建时逐个推送所有标记。对此的功能可能与此类似:

(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方便,而纬度/经度坐标分别位于latlong