문제

나는 버그에 부딪친 것처럼 보이거나 무언가를 간과했습니다.

마우스가 벡터 기능 내부에 있는지 확인하기 위해 OpenLayers 벡터 레이어의 모든 벡터 기능을 열거하는 일부 코드를 작성했습니다. 그렇다면 기능을 기반으로 일부 정보가 표시됩니다.

기존 OpenLayers 컨트롤 (선택 등)이 마우스 아래에서 기능을 찾은 후 중지하고 여러 가지 기능이 서로 쌓일 가능성이 있기 때문에이 방법을 작성해야했습니다.

내 문제는 .containspoint 메소드가 '팬'이전의 코디를 사용하는 것 같습니다. 확대 후 또는 축소 후 지오메트리가 올바른 위치에있는 것처럼 보이며.

맵이 무언가를 업데이트하기 위해 펀드를 낸 후 무언가를해야합니까 (Feature의 지오메트리)

도움이 되었습니까?

해결책

나는이 질문이 거의 첫 번째 생일 이었다는 것을 알고 있으며, 더 이상 유효하지 않을 수도 있지만, 어쨌든 대답 할 것입니다.

OpenLayers.control.dragpan은 패닝을 마치면지도를 호출합니다. OpenLayers.map 팬 함수를 확인하면 다음 주석이 표시됩니다.

// only call setCenter if not dragging or there has been a change

이 함수의 다음 논리는이 주석을 반영합니다.

그렇습니다. 패닝을 마칠 때마다 다음과 같은 작업을 수행해야합니다.

dragpan.handler.up = function(evt)
{
    dx = dragpan.handler.last.x - evt.x;
    dy = dragpan.handler.last.y - evt.y;
    var centerPx = map.getViewPortPxFromLonLat(map.getCenter());
    var newCenterPx = centerPx.add(dx, dy);
    var newCenterLonLat = map.getLonLatFromViewPortPx(newCenterPx);
    map.setCenter(map.getCenter() + dragpan.handler.xy);
}

... 그리고 일이 마술처럼 당신을 위해 일해야합니다.

다른 팁

샘플 코드 스 니펫이 없으면 대답하기가 매우 어렵습니다. OpenLayers는 마우스 클릭에서 여러 객체를 선택할 수 있습니다. 이미 OpenLayers 2.8을 사용해 보셨습니까?

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top