Google maps 同时拖放对象

Google maps 同时拖放对象,google-maps,google-maps-api-3,Google Maps,Google Maps Api 3,我面临一个问题。。。我在寻找解决方案或想法。我想同时拖放多个对象(标记、多段线等),但我不知道这是否可行 有人有主意吗 提前谢谢! 当做 塞巴斯蒂安 谢谢你,尼尔斯!!! 你给我好方法! 以下是我如何使之成为可能的: google.maps.event.addListener(window["Overlay" + i] , 'click', function(event) { var path = this.getPath(); google.maps.event.addListener(pa

我面临一个问题。。。我在寻找解决方案或想法。我想同时拖放多个对象(标记、多段线等),但我不知道这是否可行

有人有主意吗

提前谢谢! 当做 塞巴斯蒂安


谢谢你,尼尔斯!!! 你给我好方法! 以下是我如何使之成为可能的:

google.maps.event.addListener(window["Overlay" + i] , 'click', function(event) {
var path = this.getPath();
google.maps.event.addListener(path, 'set_at', function(indEdited,newLatLng){
        var oo = this.getAt(indEdited);
        diffLat = (newLatLng.lat() - oo.lat());
        diffLng = (newLatLng.lng() - oo.lng());
        moveOverlay(this,indEdited,diffLat,diffLng);
       var temp = "Do you want to me the others overlays ?"
        if (fromPath == lastPath )
        {
            if ( confirm(temp) ){
                moveOthersOverlays(diffLat,diffLng);
            }
        }
    }); 
});

问题是,只有标记可以拖放,所以在设计功能时必须牢记这一点

首先我们需要知道起始位置,这是通过dragstart事件完成的。请不要告诉我你必须在你所有的标记上这样做

var startLatLng;
google.maps.event.addListener(marker, 'dragstart', function(){
  marker.getPosition()
});
您将利用函数拖动事件,并在所有对象上循环。我将在这里使用伪代码,如果有不清楚的地方,请告诉我。假设您将标记保存在一个数组中

google.maps.event.addListener(dragmarker, 'drag', function(){
   end = dragmarker.getPosition();
   for (marker in markers){
      // Don't care about marker being dragged
      if (dragmarker == marker)
          continue;
      current = marker.getPossition();
      // Bellow we create a new position for the marker by calculating the difference 
      // and add it to the current possition of the marker
      marker.setPosition(new google.maps.LatLng(
                    current.lat() + (end.lat() - start.lat()), 
                    current.lng() + (end.lng() + start.lng()));
   }

   // Same same for the polylines but you will have to loop over the path
});
请注意,如果有很多物体在你周围移动,这将非常缓慢。但是当我移动两个标记和一条小的多段线时,这对我来说非常有用。另外,请注意代码有点粗糙,我只是想展示一下它是如何完成的。在我的解决方案中,我将标记和多段线存储在对象中,这些对象将自我更新

您可以在以下网址查看我的代码: