Google Maps API数据图层功能。事件严重未被解雇

时间:2016-02-04 11:45:23

标签: google-maps google-maps-api-3

我有一个数据层:

mylayer.loadGeoJson(myGeoJsonString);
mylayer.setStyle(function(feature){
    var col = feature.getProperty('strokeColor');
    return  { strokeColor: col,
        strokeWeight: 3,
        fillOpacity: 0,
        clickable: true,
        draggable: true             
    }
});

使用鼠标拖动操作可以在地图上移动每个要素,但如果我尝试向dragend事件添加侦听器:

    mylayer.addListener('dragend', function(event) {
        if (confirm("Do you really want to move it?")) {
            console.log ("Moved, need to update spatial DB...");
        }
    }); 

但事件不会触发(也请使用Google Chrome调试控制台断点进行检查)。

我哪里错了?

2 个答案:

答案 0 :(得分:3)

Google Maps Javascript API Data Layer

上没有dragend个事件

有关可用活动的详情,请参阅此答案:What events are available for google.maps.data.addListener?documentation

可用事件:

  
      
  • addfeature
  •   
  • 点击
  •   
  • 鼠标按下
  •   
  • 鼠标移开
  •   
  • 鼠标悬停
  •   
  • 鼠标松开
  •   
  • removefeature
  •   
  • removeproperty
  •   
  • rightclicksetgeometry
  •   
  • 的setProperty
  •   

答案 1 :(得分:0)

当您调用数据层API时,您可以在完成调用时接收调用的状态,并监听调用最终对侦听器所做的任何更改。

您会注意到对数据层API的调用有时会返回“ PendingResult ”。一旦创建了' PendingResult ',操作就会在后台排队,因此 PendingResult 可让您等待结果状态,同步异步

如果您的代码在主UI线程上运行,请不要对Data LayerAPI进行阻止调用。您可以通过向 PendingResult 添加回调方法来异步运行调用。

如果您的代码在后台服务中的单独处理程序线程上运行,则可以阻止调用。在这种情况下,您可以在PendingResult上调用“ await ()”。

有关事件处理的更多信息,请参阅以下链接:https://developers.google.com/maps/documentation/javascript/examples/layer-data-event