如何通过拖动在地图上编辑地图项位置?

时间:2018-11-07 12:47:47

标签: arcgis arcgis-js-api

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

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

谢谢

1 个答案:

答案 0 :(得分:0)

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

  1. 将mousedown事件侦听器添加到地图
  2. 在地图上按下鼠标,确认要素是否与以鼠标按下位置为中心的圆相交(您必须在此处将像素转换为地图单位);
  3. 如果要素相交,请添加地图mousemove和mouseup事件侦听器
  4. 在地图上移动鼠标时,使用光标的位置修改要素的几何形状(这对于点要素来说很容易,但是对于折线和多边形来说则更为复杂)。另外,您应该为此事件监听器使用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
}