我有一个数据层:
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调试控制台断点进行检查)。
我哪里错了?
答案 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