2008-10-06 4 views
7

KML 및/또는 KMZ 데이터에서 Google지도 오버레이를 생성 할 수있는 F/OSS를 찾고 있습니다.Google지도 오버레이

우리는 작년에 ~ 16,000 개의 장소 표시자를 수용하는 데 필요한 작업 사이트를 보유하고 있으며 올해에는 다시 그 이상을 가질 가능성이 높습니다. 작년에 사이트를 만든 회사는 KML 데이터를 직접 gMaps API에 공급하고 모든 마커 클라이언트 측을 배치했습니다. 분명히 이것은 성능 악몽이되어 구형 브라우저를 "동결"시키거나 적어도 한 번에 몇 분 동안 동결시키는 경향이 있습니다.

이 서버 측 스크립트는 KML,지도의 위도/경도 중심,지도 확대/축소 레벨을 취해 모든 보이는 장소 표시자를 하나의 GIF 또는 PNG 오버레이로 적절하게 병합하는 것이 이상적입니다.

여기에 대한 안내 또는 권장 사항에 크게 감사드립니다.

UPDATE 10/8/2008 - 여기에 나온 정보 중 대부분은지도상의 포인트 수를 줄이는 것이 길잡이임을 나타냅니다. 더 높은 고도/줌 레벨에서 볼 때 여러 가지를 나타냄). 어떤 경우에는 이것이 아마도 좋은 접근이지만, 여기서는 효과가 없을 것입니다. 우리는 수천 개의 표식이있는 미국지도의 시각적 영향을 찾고 있습니다. 내가 조사한 한 가지 옵션은 PushPin이라는 서비스로, KML을 제공하면 서버 측에서 중앙 위도/경도 및 줌 레벨을 기반으로 한 모든 가시 점을 갖는 오버레이가 단일 이미지로 렌더링됩니다. 따라서 수천 개의 DOM 조작 클라이언트 측을 수행하는 대신, 모든 마커를 단일 이미지 서버 측에 병합하고 클라이언트 측에서 단일 DOM 조작을 수행합니다. PushPin 서비스는 정말 매끄럽고 관련 비용이 들지 않으면 확실히 작동합니다. 우리는 이 오버레이를 생성하기 위해 서버 측을 실행할 수있는 F/OSS를 찾고 있습니다.

답변

0

이것은 힘든 일입니다. custom tilesets with Google Maps을 사용할 수 있지만 타일을 생성하는 방법은 수동으로해야합니다.

나는 그게 내가 가진 전부입니다 두려워 =/

당신은 Geoserver 또는 Mapserver 같은 조사 할 수 있습니다
+0

네, 확실히 오버레이가 있다고 생각합니다.하지만 특별히 원하는 것은 KML, 중심 위도/경도 및 줌 레벨을 기반으로 오버레이를 생성하는 서버 측입니다. – theraccoonbear

4

. 그것들은 Google 맵 클론이고 훨씬 더 많습니다.

당신이 좋아하는 오버레이를 생성 할 수 있고 Geoserver (저는 mapserver도 마찬가지입니다)는 KML, PDF, png 및 기타 출력물로지도를 혼합하거나, 전체지도를 직접 생성 할 수 있으며, 그러나 그것은 시간이 걸립니다.

+0

재미있는 표정으로, 그들이 우리의 목적을 위해 작동하는지 확인해 보겠습니다. – theraccoonbear

+1

우리는 도전적으로 GeoServer와 GeoWebCache를 조사 할 것입니다! – Adrian

+4

혐오? "그냥 우리를 막으려 고 !!" ;) – DanM

1

프로젝트에 어떤 요금이 있는지 모르지만 GeoDjango을 살펴볼 수 있습니까? 이 수정 된 Django 릴리스에는 위치를 저장하는 모든 종류의 도구가 포함되어 있습니다. 좌표 변환 및지도 표시, 쉬운 방법. Offcourse를 사용하려면 파이썬 경험과 서버를 실행해야하지만 일단 Django를 사용하면 빨리 작동합니다.

문제 해결을 원할 경우 더 낮은 줌 레벨로 결과를 그룹화하면이 구현의 좋은 예가 here입니다.

+0

Django/Python이 딜리버리 차단기라는 것을 알지는 못하지만 이전에는 어느 기술로도 작업 해본 적이 없습니다. 이 사이트의 핵심은 클라이언트의 요청에 따라 Drupal에서 돈이 될 것이므로 PHP 백엔드가 좋습니다. 그러나 나는이 옵션을 체크 아웃 할 것이다. – theraccoonbear

0

OpenLayers은 여러 매핑 서비스 또는 사용자의지도 서버에 대한 훌륭한 자바 스크립트 프론트 엔드입니다. 버전 2.7이 출시 된 이래로 몇 가지 놀라운 기능과 컨트롤이 추가되었습니다.

2

GIF/PNG 오버레이로 이동하려는 이유를 직접 모르면 KML에서 직접이 작업을 수행 할 수 있습니다.현재 대부분의 성능 문제는 사용자의 현재보기가 아닌 지점에서 발생한다고 가정합니다. 즉, 사용자는 뉴욕을보고 있지만 로스 앤젤레스에서는 표시되지 않아 메모리를 낭비하는 포인트가 있습니다. 일반적인 16,000 포인트를 모두 한꺼번에 볼 수 있다면 다른 전략을 세워야합니다. 위에서 적용되면

로 될 것이다 절차는 다음과 같습니다

  1. 당신이 왼쪽 상단의 긴/위도를 계산할 수 있어야한다 감안할지도
  2. 의 중심 & 범위를 결정하고 지도의 오른쪽 아래 모서리.
  3. 데이터베이스 데이터베이스를 반복하고 각 위치를 두 모서리와 대조하여 확인하십시오. 경도는 왼쪽 위 경도보다 크고 (서명!) 오른쪽 아래 경도보다 작아야합니다. 위도는 왼쪽 위도 (서명!)보다 적어야하며 오른쪽 위도보다 커야합니다. 그냥 간단한 비교, 여기에 멋진 계산이 필요하지 않습니다.
  4. 일치하는 포인트를 사용자의 임시 KML에 출력합니다.
  5. KML directly into Google Maps을 제공하고지도에 표시하거나 Javascript maps API을 사용하여 KML을 통해 점수를로드 할 수 있습니다.

정확한 문제는 여기에서 해결되지 않을 수도 있지만 관련 문제는 Google Static Maps API에서 확인할 수 있습니다. 이렇게하면 매우 빠르게로드되지만 일반 Google지도의 상호 작용이없는 위치 표시기가있는 정적 이미지 파일을 만들 수 있습니다. 그러나 API가 설계된 방식으로 인해 16,000 포인트 근처에서 처리 할 수 ​​없으므로 여전히 뷰로 필터링해야합니다.

+0

전체 데이터 세트를 보여주는 국가 수준의 뷰를 작성하는 계획이므로 모든 포인트를 동시에 표시해야합니다. 확대/축소를 허용하고 줌 레벨 뷰 반경을 사용하여 사용자가 드릴 다운 할 때 더 작은 KML 데이터 세트를 사용할 수 있지만 모두 표시 할 수 있어야합니다. – theraccoonbear

+0

나는 국가 별지도에서 하나의 압정으로 줄일 수있는 이벤트 클러스터를 찾는 전략을 채택하여 그 도시의보기로 하이퍼 링크를 만듭니다. 이 방법은 비슷하지만 "x"마일 이내에있는 포인트를 찾기 위해 Haversine 공식 버전을 사용해야합니다. –

관련 문제