Google maps 谷歌地图API数据层功能。事件未触发

Google maps 谷歌地图API数据层功能。事件未触发,google-maps,google-maps-api-3,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, dra

我有一个数据层:

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调试控制台断点进行检查)


我错在哪里?

屏幕上没有
dragend
事件

有关可用事件,请参见此答案:或

可用事件:

  • 附加功能
  • 点击
  • 穆斯敦
  • 灭鼠器
  • 鼠标盖
  • 鼠标
  • 移除特征
  • 移除属性
  • 右键单击设置几何体
  • setproperty

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

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

如果代码在主UI线程上运行,请不要对数据层RAPI进行阻塞调用。通过向Pendingreult添加回调方法,可以异步运行调用

如果您的代码在后台服务中的单独处理程序线程上运行,那么阻塞调用就可以了。在这种情况下,可以在Pendingreult上调用“wait()”


有关事件处理的更多信息,请点击此链接:

谢谢,您知道使用mousedown和mouseup事件检测拖动结束的良好做法吗?mousedown和mouseup事件具有作为事件对象一部分的功能。因此,您可以在mousedown启动时将对象的ID存储在一侧。当mouseup启动时,您可以n查看ID是否匹配以及几何体是否不同。如果几何体不同,您知道这是一个拖动事件,而不仅仅是单击。您还可以检查几何体的最小更改量,以避免意外的轻微拖动和过度单击。