如何在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()方法。然而,我现在决定选择向量。谢谢