문제

OpenLayers를 사용하여 OpenStreetMap 맵을 표시합니다. (하지만, 이것이 모든지도 제품에 대해 일할만큼 충분히 일반적이어야한다고 생각합니다 ...)

매우 정교한 벡터 오버레이를 표시하고 있으며 Geojson을 통해 서버에서 오버레이로 반환하는 기능의 양과 해상도가 많은 컴퓨터에서 너무 많은 것으로 입증되었습니다.

내가 지금하고 싶은 것은 대신 현재 줌의 해상도에 맞는 데이터 만 보내는 것입니다. 이것은 사용하기가 상대적으로 쉽습니다 getResolution 그리고 calculateBounds 방법에 대한 방법 Map 물체. calculateBounds 맵 프로젝션과 디스플레이 투영 사이에서 변환 할 수있는 경계 객체를 반환합니다.

해상도를 원하는 프로젝션 (이 경우 4326)으로 어떻게 변환합니까? 이 작업을 수행하는 방식이 내장되어 있습니까? 아니면 알려진 공식에 대한 해상도를 실행해야합니까?

도움이 되었습니까?

해결책

당신이 사용할 수있는 proj4js 클라이언트에서 좌표 시스템을 변환합니다.

다른 팁

Geojson Vector 레이어가 그려지는 규모를 제한하는 것은 어떻습니까?

http://dev.openlayers.org/docs/files/openlayers/layer-js.html#openlayers.layer.maxscale

그런 다음 OpenLayers AJAX 요청은 서버에 대한 요청 이이 척도를 넘어 트리거해야합니다. 벡터 레이어를 표시 할 때 해당하는 OpenSteetMaps 스케일 / 줌 레벨을 선택하고 그에 따라 MaxScale을 설정하십시오.

요청은 관련 기능을 얻으려면 현재 맵 디스플레이의 한계를 서버로 자동 전송해야합니다.

그래도 당신의 딜레마를 오해했을 수도 있습니다. 해상도 공식을 원한다면이 기사는 다음을 설명합니다.

http://msdn.microsoft.com/en-us/library/aa940990.aspx

업데이트

OpenLayers에서 클러스터링 전략을 구현할 수 있습니다. 동일한 양의 데이터가 데이터베이스에서 반환 될 것이라고 가정하지만 렌더링 시간을 줄여야한다고 생각합니다.

http://dev.openlayers.org/releases/openlayers-2.7/doc/apidocs/files/openlayers/strategy/cluster-js.html

여기에서 예를 확인하십시오.

http://openlayers.org/dev/examples/strategy-cluster.html

다른 크기의 점을 피하기 위해 Pointradius를 "$ {radius}"를 상수로 설정할 수 있습니다.

마지막으로 대안은 Geojson 대신 WMS 서비스를 사용하는 것입니다. 서버는 고정 된 크기의 이미지 만 반환하는 것입니다.

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