私は、OpenLayersに基づいたOrdnance Survey(これはOpenSpaceと呼ばれる)のAPIを使用してlink textというサイトを作成しました。地図をクリックしてマーカーを追加すると、マーカーをクリックしてマップ上でドラッグできるようになります。 OpenSpaceまたはOpenLayers APIを使用してこれを行う簡単な方法はありますか?Ordnance Survey/Openlayersでマーカーをドラッグapi
2
A
答えて
6
OpenLayers APIを使用すると、マーカーとフィーチャーをマップに追加できます。 MarkerではなくFeaturesを追加すると、次のコードを追加することでマーカーをドラッグ可能にすることができます。
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にリスナーを登録できます。例えば、フィーチャーが修正(すなわちドラッグされ、リリースされた)時にリスナーを登録するには、次のコードを使用する必要があります。ベクトル層をとり、これを行うための簡単な方法は、openlayerドラッグコントロールを使用しているとしてOpenLayersをAPIのドキュメントOpenLayers api doc
1
を見て聞くことができるイベントの完全なリストについては、
vectorLayer.events.register('featuremodified', vectorLayer, function(feature) {
//custom behavior
});
ターゲット。
var drag=new OpenLayers.Control.DragFeature(vectors);
map.addControl(drag);
drag.activate();
ドラッグコントロールを使用しての他の利点は次のとおりです、ベクトルと呼ばれるアイコンを含むベクトル層を(これはOLの開発者が使用して思いとどまらマーカーに好まれている)、あなたは、単に行うことができと仮定
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. Google Maps API - マーカー
- 3. GoogleマップAPI v3にドラッグ可能なマーカーを読む新しい位置
- 4. GoogleマップV 3.8とドラッグ可能マーカー
- 5. Googleマップのマーカーのドラッグ&ズームの問題
- 6. Google Maps APIでマーカー機能を追加
- 7. ドラッグ可能なマーカーからマーカーの新しい位置を保存 - GoogleマップV3
- 8. Googleマップandroid api v2マーカー影
- 9. Google MapのAPIマーカーJavascript
- 10. Google Map APIマーカーの番号?
- 11. Google Map API - マーカーの削除
- 12. Google Maps API v3マーカー座標
- 13. ポリゴンオーバーレイをドラッグする - リーフレットオープンソースマップAPI
- 14. Android - マップを保持することなくマーカーをドラッグする
- 15. iOS向けGoogleマップSDKを使用したドラッグ可能なマーカー
- 16. マップの外側のマーカーをhtml要素にドラッグ
- 17. マーカーをドラッグ可能にしてクリック可能にする
- 18. はマーカーJavascriptをGoogle MapsのAPI
- 19. マーカーを中心に、Google maps api
- 20. Google Maps API V3のマーカーをプロットする
- 21. マーカーを区別するapi v3
- 22. API 3.8:マーカーをドラッグした後、marker.setMap(null)がそれ以上表示されない場合
- 23. OpenLayersで単純なドラッグ可能なマーカーを作成する方法
- 24. GoogleマップAPI v3の - マーカーの影が
- 25. 色合いGoogleマップのAndroid APIマーカー
- 26. Google Maps API V3の制限マーカー
- 27. OverlayView、GoogleMaps API V3上のマーカーJavaScript
- 28. Google map api、マーカーごとに同じアイコン
- 29. Google Maps API v3でマーカーを作成できません...
- 30. Google Maps APIで「デフォルト」マーカーを自動的に選択
私はちょうど上記のコードを使用し、1つの問題とは別に問題なく動作します。マーカーをドラッグ/移動してズームインまたはズームアウトすると、ベクター機能が消えます。何か案は? – nickdos