我已经创建了一个基于OpenLayers的使用由Ordnance Survey(我认为这叫做OpenSpace)生成的API的网站link text。我已经得到了它,所以你可以点击地图添加一个标记,然后我想要点击标记并在地图上拖动它。有没有简单的方法来使用OpenSpace或OpenLayers API进行此操作。使用Ordnance Survey/Openlayers API拖动标记
2
A
回答
6
OpenLayers api允许您将标记和要素添加到地图。如果添加Features而不是Markers,则可以通过添加以下代码使它们可拖动。
var vectorLayer = new OpenLayers.Layer.Vector("Vector Layer");
var osMap = new OpenSpace.Map('map');
osMap.addLayer(vectorLayer);
var modifyFeaturesControl = new OpenLayers.Control.ModifyFeature(vectorLayer);
modifyFeaturesControl.mode = OpenLayers.Control.ModifyFeature.RESHAPE;
osMap.addControl(modifyFeaturesControl);
modifyFeaturesControl.activate();
这将允许您拖动地图周围的功能。如果要在拖动要素时添加自定义行为,可以在vectorLayer上注册侦听器。例如,要在功能被修改(即拖动和释放)时注册侦听器,您需要使用以下代码。
vectorLayer.events.register('featuremodified', vectorLayer, function(feature) {
//custom behavior
});
对于可以边听边看的的OpenLayers API文档OpenLayers api doc
1
至于更简单的方式做,这是通过使用openlayer拖动控制,这需要一个载体层作为事件的完整列表目标。
假设包含图标的载体层(这是首选到标记,OL的开发商劝阻使用哪个),称为载体,可以简单地做:
var drag=new OpenLayers.Control.DragFeature(vectors);
map.addControl(drag);
drag.activate();
使用拖曳控制的另一个优点是您可以挂钩到各种回调函数,这些回调函数返回像素位置和像素位置,例如onStart和onDrag。例如,
var drag=new OpenLayers.Control.DragFeature(vectors,{
'onDrag':function(feature, pixel){
console.log(pixel.x);//this can be used to do something else, such as move another feature
}
});
查看http://trac.osgeo.org/openlayers/browser/trunk/openlayers/lib/OpenLayers/Control/DragFeature.js了解更多详情。
相关问题
- 1. Android MapView拖动标记
- 2. 拖动标记时未触发鼠标悬停Google Maps API
- 3. 即使可拖动= true,单张标记也不可拖动
- 4. 如何在Google Maps JavaScript API(V3)中强制拖动标记?
- 5. iOS Google地图标记拖动动画
- 6. 标记在Google Maps API v2上不可拖动
- 7. 添加动画拖欠setOnMarkerClickListener Maps API第2机器人标记
- 8. 谷歌地图API V3阅读拖动标记新位置
- 9. 如何更改google map api可拖动标记的颜色?
- 10. 可拖动的谷歌地图标记
- 11. 设置为可拖动的标记不能被拖动
- 12. 谷歌地图拖动标记问题
- 13. 拖动标记不刷新地址
- 14. 谷歌地图标记不会拖动
- 15. 无法在Google地图上使用JavaScript正确拖动标记
- 16. 如何拖动标记添加到谷歌地图使用jQuery
- 17. 使用rest api生成jenkins api标记
- 18. Gmaps4rails使标记可拖动并获取其坐标
- 19. 在地图上拖动标记
- 20. 拖放Javascript可移动标记排序?
- 21. 多个可拖动标记不更新
- 22. 拖动时无法看到标记?
- 23. 谷歌地图v3可拖动标记
- 24. 如何启用单点触摸后拖动标记(Android Map Api v2)?
- 25. 谷歌地图,如何禁用标记图标被拖动?
- 26. cloudmade - 拖动的标记+收集标记坐标被存储或在应用中使用
- 27. 使用SendMessage拖动拖放
- 28. 使用简单光标拖动N滴
- 29. 如何拖动并使用鼠标
- 30. API 3.8:拖动标记后,如果marker.setMap(null)则不会出现更多
我刚刚使用了上面的代码,除了一个问题之外,它工作得很好:当拖动/移动标记然后放大或缩小时,我的矢量特征消失。有任何想法吗? – nickdos 2010-08-20 05:13:23