2016-07-26 4 views
1

서버 측에서 제공되는 KML에서 일부 윤곽선을 플로팅합니다. 열린 레이어에서 윤곽 레이블 지정 3.17.1

enter image description here

내 현재의 접근 방식

지도 및 사용의 각 가장자리 산책하는 것입니다 : 내가 뭘하려는 아래의보기에 따라, 뷰포트의 가장자리 근처 각 윤곽에 대한 레이블을 추가 할 것입니다 forEachFeatureAtPixel을 사용하여 [x, y]에 윤곽선/지형지 물이 있는지 확인합니다. 윤곽선이 발견되면 레이블은 현재 픽셀에 상대적으로 추가되고 형상의 "hasLabel"속성이 추가되고 true로 설정되어 윤곽/피쳐 당 하나의 레이블 만 추가됩니다.

사용자가 확대/축소 또는 변환을 통해 뷰포트를 변경하면 레이블이 제거되고 동일한 프로세스가 다시 실행되어 올바른 위치에 레이블을 추가합니다.

일부 고객은 그려지는 등고선과 레이블이 추가 될 때까지 상당한 지연이 있다고 불평했습니다. - 내 dev 컴퓨터에서는이를 관찰하지 않지만 다소 높은 사양입니다.

제 질문은 레이블의 위치를 ​​더 빨리 계산할 수 있습니까? (일부는 내장 아마도 현재보기를 넘어 확장 모든 기능을 나열 OpenLayers 기능?)

추가 :

https://lqsts.blob.core.windows.net/temp/DayContours.kml : 나는에서 제공 윤곽의 두 세트의 KML 소스를했습니다

https://lqsts.blob.core.windows.net/temp/MinuteContours.kml

+0

이 작업은'jsts' lib를 사용하여 수행 할 수 있습니다. 현재 mbr과 교차점을 교차시키고 교차점에 레이블을 배치하십시오. 물론 이것은 jsts 라이브러리를 포함해야한다는 것을 의미합니다. 컨투어를 생성하기 위해 코드를 제공하면 demostrate를 위해 바이올린을 만들 것입니다. – pavlos

+0

많은 제안에 감사드립니다! 두 가지 윤곽선 (녹색과 파란색)에 대한 KML 소스 파일에 대한 링크를 추가했습니다. JSTS를 사용하여 설정 한 바이올린은 실제로 도움이 될 것입니다. – ProfNimrod

답변

2

내가 제공하는 솔루션에는 jsts 라이브러리가 필요합니다. 이렇게하려면 jsts.js 파일을 포함하기 만하면됩니다. 이것은 최신 버전이며 솔직히 말해서 테스트를 거친 후 대단한 행동을 보이는 것입니다. 당신이 allready 가지고있는 솔루션보다 빠른 경우 테스트 할 수 있도록

여기, 당신의 fiddle 최종되지하지만 대부분의 작업이 수행된다.

+0

정확히 내가 필요한 것. 난 그냥 내 솔루션에 그것을 구현 완료하고 확실히 내 접근 방식보다 빠르게 작동합니다. 참으로 많은 감사드립니다! – ProfNimrod

+0

내 친구를 도울 수있어서 다행 !!!!!! – pavlos