我已經創建了一個基於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. 拖動標記不工作
- 2. 拖動標記的Android
- 3. Android MapView拖動標記
- 4. 拖動標記時未觸發鼠標懸停Google Maps API
- 5. 創建可拖動標記
- 6. 即使可拖動= true,單張標記也不可拖動
- 7. 使標記可拖動並可點擊
- 8. 單擊Android後使標記可拖動
- 9. 標記拖拽事件Google Maps API V3
- 10. 如何在Google Maps JavaScript API(V3)中強制拖動標記?
- 11. iOS Google地圖標記拖動動畫
- 12. 標記在Google Maps API v2上不可拖動
- 13. 添加動畫拖欠setOnMarkerClickListener Maps API第2機器人標記
- 14. 谷歌地圖API V3閱讀拖動標記新位置
- 15. 如何更改google map api可拖動標記的顏色?
- 16. 可拖動的谷歌地圖標記
- 17. 設置爲可拖動的標記不能被拖動
- 18. 可拖動標記和繪圖工具
- 19. 谷歌地圖拖動標記問題
- 20. 谷歌地圖標記拖動事件
- 21. 拖動標記不刷新地址
- 22. 無法在Google地圖上使用JavaScript正確拖動標記
- 23. 如何拖動標記添加到谷歌地圖使用jQuery
- 24. 如何使用拖放動畫爲多個標記創建Infowindows
- 25. 谷歌地圖標記不會拖動
- 26. 使用rest api生成jenkins api標記
- 27. 當前位置拖動的標記
- 28. Gmaps4rails使標記可拖動並獲取其座標
- 29. 在地圖上拖動標記
- 30. 谷歌地圖v3可拖動標記
我剛剛使用了上面的代碼,除了一個問題之外,它工作得很好:當拖動/移動標記然後放大或縮小時,我的矢量特徵消失。有任何想法嗎? – nickdos 2010-08-20 05:13:23