如何通过拖动来编辑地图上的要素位置?

How to edit Feature position on map by draging?

我需要通过在地图上拖动来移动地图上的地图项位置。

使用地图服务器时,我可以做到这一点,但我无法在我的 HTML 地图上实现它。 在文档或搜索问题时找不到与此相关的任何内容。

谢谢

假设您的特征是图形对象。

  1. 向地图添加 mousedown 事件侦听器
  2. 在地图 mousedown 上,验证要素是否与以 mousedown 位置为中心的圆相交(您必须在此处将像素转换为地图单位);
  3. 如果要素相交,添加地图 mousemove 和 mouseup 事件侦听器
  4. 在地图mousemove上,用光标的位置修改要素的几何形状(这对于点要素来说很容易,但对于折线和多边形来说更复杂)。另外,您应该为此事件侦听器使用 debounce or throttle function 以防止过度计算。

  5. 在地图 mouseup 上,移除 mousemove 和 mouseup 事件侦听器

要计算圆的半径,您必须考虑地图的当前范围。以下是计算半径的方法:

function getSearchAtPointRadius(mapView) {
    //20m if your map units are in meters
    return 20 * (mapView.extent.xmax - mapView.extent.xmin) / mapView.width
}