OpenLayers를 기반으로 한 Ordnance Survey (내가 OpenSpace라고 생각합니다)에서 제작 한 API를 사용하여 link text 사이트를 만들었습니다. 지도를 클릭하여 마커를 추가하면 마커를 클릭하고지도 주위로 끌고 싶을 수 있습니다. OpenSpace 또는 OpenLayers API를 사용하여이 작업을 수행하는 간단한 방법이 있습니까?Ordnance Survey/Openlayers로 마커 드래그 api
2
A
답변
6
OpenLayers API를 사용하면 마커와 지형지 물을지도에 추가 할 수 있습니다. 마커가 아닌 기능을 추가하면 다음 코드를 추가하여 마커를 드래그 할 수 있습니다.
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
});
목표. 아이콘을 포함하는 벡터 레이어를 가정
이라는 벡터 (이것은 OL의 개발자가 사용 억제 마커를 선호한다), 당신은 간단하게 수행 할 수 있습니다
이var drag=new OpenLayers.Control.DragFeature(vectors);
map.addControl(drag);
drag.activate();
드래그 컨트롤을 사용의 또 다른 장점은 onStart 및 onDrag와 같은 기능 및 픽셀 위치를 반환하는 다양한 콜백에 연결할 수 있습니다. 예 :
자세한 내용은 http://trac.osgeo.org/openlayers/browser/trunk/openlayers/lib/OpenLayers/Control/DragFeature.js을 참조하십시오.
방금 위의 코드를 사용했는데 하나의 문제점을 제외하고는 잘 작동합니다. 마커를 끌거나 이동 한 다음 확대 또는 축소하면 벡터 기능이 사라집니다. 어떤 아이디어? – nickdos