如何在OpenLayers.Layer.Markers层中移动标记?

如何在OpenLayers.Layer.Markers层中移动标记?,openlayers,Openlayers,如何以编程方式移动OpenLayers.Layer.Markers层上的现有标记?我似乎找不到合适的方法 这是否得到支持?或者我必须使用向量层吗 marker.moveTo()函数对我不起作用,我的坐标是lat/lon。marker.moveTo()不是“官方”API方法。OpenLayers中的其他方法在内部使用它,实际上不鼓励您使用未标记为“APIMethod”的方法 在新职位上移除和添加标记不符合您的要求吗?有removeMarker()和addMarker()api方法用于此 如果不是,

如何以编程方式移动
OpenLayers.Layer.Markers
层上的现有标记?我似乎找不到合适的方法

这是否得到支持?或者我必须使用
向量
层吗

marker.moveTo()
函数对我不起作用,我的坐标是lat/lon。

marker.moveTo()
不是“官方”API方法。OpenLayers中的其他方法在内部使用它,实际上不鼓励您使用未标记为“APIMethod”的方法

在新职位上移除和添加标记不符合您的要求吗?有
removeMarker()
addMarker()
api方法用于此


如果不是,我会考虑使用矢量层,因为它在渲染和操作特性方面更灵活。

如果你有新的点的Lon /LAT,那么标记可以移动为:

var newLonLat = new OpenLayers.LonLat(lon, lat);
var newPx = map.getLayerPxFromLonLat(newLonLat);
myMarker.moveTo(newPx);

这是一个演示单击时移动标记事件的完整示例

咖啡脚本:

projection_4326 = new OpenLayers.Projection("EPSG:4326") #Transform from WGS 1984
projection_900913 = new OpenLayers.Projection("EPSG:900913") # Spherical Mercator Projection
markers = new OpenLayers.Layer.Markers( "Markers")
marker = new OpenLayers.Marker(new OpenLayers.LonLat(0,0).transform(projection_4326, projection_900913), icon)
markers.addMarker(marker)
map = new OpenLayers.Map(...init...stuff)
map.addLayers([markers])
map.events.register "click", map, (e) ->
            opx = map.getLayerPxFromViewPortPx(e.xy)
            lonLat = map.getLonLatFromPixel(e.xy)
            # now, if your coordinates are in EPSG:4326 you would have to convert the lonLat here
            #new_position = marker.lonlat.transform(projection_4326, projection_900913)
            marker.map = map
            marker.moveTo(opx) #or new_position

可能删除和添加标记会起作用,但我不知道在一个层中有许多标记时性能会如何。这就是为什么我想看看move()方法。然而,我现在决定选择向量。谢谢