2012-05-11 2 views
0

오픈 레이어에서 GML 트랙의 클릭 이벤트를 잡을 수있는 방법은 무엇입니까?OpenLayers의 GML 트랙을 클릭하십시오.

var gmlTrack = new OpenLayers.Layer.GML("Track", myGpxUrl, { 
    format: OpenLayers.Format.GPX, 
    projection: new OpenLayers.Projection("EPSG:4326") 
}); 

내가 솔루션은 다음과 같은 라인을 추가하는 것이라고 생각 :

나는 다음과 같은 코드가

gmlTrack.events.register("click", gmlTrack, function(e){ 
    alert("Click on GPX track!"); 
}); 

을하지만 그것은 작동하지 않습니다.

명확해야 함 : 사용자가 GPX 트랙을 클릭 할 때만 클릭 이벤트가 트리거되기를 원합니다.

내가 뭘 잘못하고 어떻게 해결할 수 있습니까?

감사합니다.

답변

0

당신은

selectControl = new OpenLayers.Control.SelectFeature(
     [gmlTrack], 
     { 
      clickout: true, toggle: false, 
      multiple: false, hover: false, 
      onSelect: trackSelected 
     } 
    ); 

    map.addControl(selectControl); 
    selectControl.activate(); 

을 (이벤트를 처리하는 방법을 알고 OpenLayers 수)를 선택 기능 컨트롤을 사용하여 찾고있는 것을 달성하고 trackSelected 예를 들어, 일부 핸들러를 포함 할 수 있습니다

function trackSelected(feature){ 
    alert("something here"); 
} 

이 당신의 대답에 유용한 OpenLayers example

+0

감사합니다. 내 경우의 문제는 내가 두 개의 SelectFeature (s)를 사용하고 OpenLayers가이를 지원하지 않는다는 사실에 기인합니다. 첫 번째 SelectFeature를 비활성화하면 두 번째 SelectFeature가 작동합니다. – Razvan

+0

같은 맵에서 두 개의 선택 기능 컨트롤을 사용할 수 있습니다. 많은 맵에서 가능합니다. 당신은 아마도 둘 다 동시에 활성화시킬 수 없습니다 (나는 그런 일이 일어나기를 원치 않았습니다). – AlexC

+0

예, 그게 제가 한 말입니다. 나는 동시에 둘 다 활동적으로 할 수는 없습니다. 나는 "hover"이벤트를 얻고 싶었고 "click"이벤트를 얻고 싶었습니다. – Razvan

관련 문제