Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/435.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 同时拖动2个谷歌地图标记_Javascript_Google Maps Api 3_Vue.js_Lodash - Fatal编程技术网

Javascript 同时拖动2个谷歌地图标记

Javascript 同时拖动2个谷歌地图标记,javascript,google-maps-api-3,vue.js,lodash,Javascript,Google Maps Api 3,Vue.js,Lodash,我在网上找到了一些文章和一些关于stack overflow的帖子,它们解释了如何选择多个标记,但是我没有找到任何可以同时拖动两个标记的文章。我已经能够让它以一种方式工作,允许1个标记在它的兄弟上触发一个事件并拖动相关的标记,但不知何故它停止了我单击的标记上的拖动事件 我不能使用复杂的多边形,因为在复杂的标记svg上不可能只更改一条路径的颜色。我必须创建两个SVG,一个用于中心填充,另一个用于外部填充,然后我必须更改外部填充的颜色 这就是工作原理 首先,我创建标记,然后将它们放置在相同的位置 然

我在网上找到了一些文章和一些关于stack overflow的帖子,它们解释了如何选择多个标记,但是我没有找到任何可以同时拖动两个标记的文章。我已经能够让它以一种方式工作,允许1个标记在它的兄弟上触发一个事件并拖动相关的标记,但不知何故它停止了我单击的标记上的拖动事件

我不能使用复杂的多边形,因为在复杂的标记svg上不可能只更改一条路径的颜色。我必须创建两个SVG,一个用于中心填充,另一个用于外部填充,然后我必须更改外部填充的颜色

这就是工作原理

首先,我创建标记,然后将它们放置在相同的位置

然后我将这些标记传递给这个函数

addMultiMarkerListener:function(id, outer, inner){
    var arr = ['mousedown', 'mouseup', 'click','mouseover','mouseout', 'dragend','drag','dragstar'];
    var evtArr = {}
        _.each(arr, function(evt){
            evtArr[evt] = {};
            evtArr[evt][id] = false;

            outer.addListener(evt, function(){
                if(!evtArr[evt][id]){
                    evtArr[evt][id] = true;
                    google.maps.event.trigger(inner, evt);
                    evtArr[evt][id] = false

                }

            })

            inner.addListener(evt, function(){
                 if(!evtArr[evt][id]){
                    evtArr[evt][id] = true;
                    google.maps.event.trigger(outer, evt);
                    evtArr[evt][id] = false
                }
            })
        })

    },
我希望它能够触发两个标记的mousedown事件,这样当我向下单击时,我可以同时拖动这两个标记。现在的工作方式是,在兄弟标记上触发mousedown事件时停止第一个mousedown事件


我也在想,我可以触发一个单独的事件,不会干扰第一个事件。这可能需要一点深思熟虑,但我想我能做到。我只是希望其他人能够对此提供一些见解。

我解决了这个问题。我决定在拖动事件中获取第一个标记的位置,然后将第二个标记的位置设置为第一个标记的位置,而不是触发两个mousedown事件。像这样

  addDragListener: function(marker, id, centerMarker) {
        var self = this;
        var fill = centerMarker;


        marker.addListener('drag', function(){
            var position = marker.getPosition();
            fill.setPosition(position);

        })
  }