2008-10-06 72 views
7

Tôi đang cố tìm một thứ gì đó, tốt nhất là F/OSS, có thể tạo lớp phủ Google Maps từ dữ liệu KML và/hoặc KMZ.Lớp phủ Google Maps

Chúng tôi đã có một trang web sự kiện mà chúng tôi đang nghiên cứu để đáp ứng ~ 16.000 điểm đánh dấu vào năm ngoái và có thể sẽ có ít nhất một lần nữa trong năm nay. Năm ngoái, công ty đã thực hiện trang web này chỉ cung cấp dữ liệu KML trực tiếp cho API gMaps và để cho nó đặt tất cả các mặt đánh dấu của khách hàng. Rõ ràng, đó đã trở thành một cơn ác mộng hiệu suất và có xu hướng làm cho các trình duyệt cũ hơn "đóng băng" (hoặc ít nhất xuất hiện đông lạnh trong vài phút tại một thời điểm).

Lý tưởng nhất là tập lệnh phía máy chủ này sẽ lấy KML, trung tâm lat/lon của bản đồ và mức thu phóng bản đồ và hợp nhất tất cả các điểm đánh dấu địa điểm vào một lớp phủ GIF hoặc PNG.

Bất kỳ hướng dẫn hoặc đề xuất nào về điều này sẽ được đánh giá cao.

CẬP NHẬT 10/8/2008 - Hầu hết thông tin tôi đã gặp ở đây và các địa điểm khác dường như chỉ ra rằng việc giảm số lượng điểm trên bản đồ là con đường để đi (tức là sử dụng một điểm đánh dấu đại diện cho một số khi xem từ độ cao/mức thu phóng cao hơn). Trong khi đó có thể là một cách tiếp cận tốt trong một số trường hợp, nó sẽ không hoạt động ở đây. Chúng tôi đang tìm kiếm tác động trực quan của bản đồ Hoa Kỳ với hàng nghìn điểm đánh dấu trên đó. Một tùy chọn tôi đã khám phá là một dịch vụ gọi là PushPin, khi được cho ăn (có lẽ) KML sẽ tạo, phía máy chủ, lớp phủ có tất cả các điểm nhìn thấy được (dựa trên lat/lon trung tâm và mức thu phóng) được hiển thị trên một hình ảnh , thay vì thực hiện vài nghìn thao tác DOM phía máy khách, chúng tôi hợp nhất tất cả các điểm đánh dấu đó thành một mặt máy chủ hình ảnh đơn và thực hiện thao tác DOM đơn lẻ trên đầu máy khách. Dịch vụ PushPin thực sự khéo léo và chắc chắn sẽ hoạt động nếu không có chi phí liên quan. Chúng tôi đang thực sự tìm kiếm thứ gì đó F/OSS rằng chúng tôi có thể chạy phía máy chủ để tự tạo lớp phủ đó.

Trả lời

0

Đây là một điều khó khăn. Bạn có thể sử dụng custom tilesets with Google Maps, nhưng bạn vẫn cần một số cách để tạo các ô (không phải thủ công).

tôi sợ đó là tất cả Tôi đã có =/

+0

có, đó chắc chắn là suy nghĩ của tôi về việc có lớp phủ, nhưng những gì tôi đặc biệt hy vọng là phía máy chủ nào đó sẽ tạo lớp phủ dựa trên KML, vĩ độ/vĩ độ trung tâm và mức thu phóng. – theraccoonbear

4

Bạn có thể muốn nhìn vào một cái gì đó giống như Geoserver hoặc Mapserver. Chúng là bản sao của Google, và nhiều thứ khác nữa.

Bạn có thể tạo lớp phủ mà bạn thích và Máy chủ địa lý (tôi nghĩ máy chủ bản đồ cũng có thể cung cấp cho bạn KML, PDF, png và đầu ra khác để kết hợp bản đồ của bạn hoặc bạn có thể tự tạo toàn bộ bản đồ, nhưng điều đó cần có thời gian.

+0

Những giao diện thú vị này, tôi sẽ xem liệu chúng có hoạt động cho mục đích của chúng tôi hay không. – theraccoonbear

+1

Chúng tôi chắc chắn sẽ xem xét GeoServer và GeoWebCache! – Adrian

+4

Defiantly? "Hãy cố ngăn chúng ta lại !!!" ;) – DanM

1

Tôi không biết bạn đang ở mức giá nào với dự án của mình nhưng có thể bạn có thể xem GeoDjango? Bản phát hành Django đã sửa đổi này bao gồm tất cả các loại công cụ để lưu trữ vị trí; chuyển đổi tọa độ và hiển thị bản đồ, một cách dễ dàng. Offcourse bạn cần một số kinh nghiệm Python và một máy chủ để chạy nó trên, nhưng một khi bạn đã có hang của Django nó hoạt động nhanh và tốt.

Nếu bạn chỉ muốn giải pháp cho vấn đề của mình, hãy thử nhóm kết quả ở các mức thu phóng thấp hơn, một ví dụ điển hình về việc triển khai này có thể được tìm thấy here.

+0

Tôi không biết rằng Django/Python sẽ là một máy cắt giao dịch, nhưng tôi chưa bao giờ làm việc với một trong hai công nghệ trước đây. Cốt lõi của trang web này sẽ được don trong Drupal, theo yêu cầu của khách hàng, do đó, một phụ trợ PHP sẽ là ý tưởng. Tôi sẽ kiểm tra tùy chọn này ra tuy nhiên. – theraccoonbear

0

OpenLayers là giao diện người dùng javascript tuyệt vời cho nhiều dịch vụ lập bản đồ hoặc máy chủ bản đồ của riêng bạn. Phiên bản 2.7 vừa được phát hành, bổ sung thêm một số tính năng và điều khiển khá tuyệt vời.

2

Không chắc chắn lý do bạn muốn chuyển đến lớp phủ GIF/PNG, bạn có thể thực hiện việc này trực tiếp trong KML.Tôi giả định rằng hầu hết vấn đề hiệu suất của bạn là do các điểm bên ngoài chế độ xem hiện tại của người dùng, tức là người dùng đang xem xét New York nhưng bạn có điểm ở Los Angeles đang lãng phí bộ nhớ vì họ không nhìn thấy được. Nếu bạn thực sự có 16.000 điểm mà tất cả đều có thể nhìn thấy cùng một lúc cho một điển hình thì có bạn sẽ cần phải theo đuổi một chiến lược khác.

Nếu áp dụng trên, các thủ tục sẽ như sau:

  1. Xác định phạm vi trung tâm & của bản đồ
  2. Cho rằng bạn sẽ có thể để tính toán lat/dài phía trên bên trái và góc dưới bên phải của bản đồ.
  3. Lặp lại cơ sở dữ liệu của bạn về các điểm và kiểm tra từng vị trí đối với hai góc. Kinh độ cần phải lớn hơn (đã ký!) So với kinh độ trên bên trái và ít hơn kinh độ dưới bên phải. Vĩ độ cần phải nhỏ hơn vĩ độ trên bên trái (đã ký!) Và lớn hơn vĩ độ dưới bên phải. Chỉ cần so sánh đơn giản, không cần tính toán lạ mắt ở đây.
  4. Xuất các điểm phù hợp với KML tạm thời cho người dùng.
  5. Bạn có thể nạp KML directly into Google Maps và để nó ánh xạ hoặc bạn có thể sử dụng Javascript maps API để tải điểm qua KML.

Nó có thể không giải quyết vấn đề chính xác của bạn ở đây, nhưng đối với các vấn đề liên quan bạn cũng có thể xem xét Google Static Maps API. Điều này cho phép bạn tạo tệp hình ảnh tĩnh với các dấu vị trí trên đó sẽ tải rất nhanh, nhưng sẽ không có tương tác của một bản đồ Google thông thường. Do cách mà API được thiết kế, tuy nhiên, nó không thể xử lý bất cứ nơi nào gần 16.000 điểm, do đó bạn vẫn phải lọc xuống chế độ xem.

+0

Kế hoạch là để có một cái nhìn cấp quốc gia cho thấy bộ dữ liệu đầy đủ, vì vậy có, chúng tôi thực sự cần phải làm cho tất cả các điểm xuất hiện đồng thời. Chúng tôi sẽ cho phép phóng to và có thể làm việc với các bán kính chế độ xem mức thu phóng để sử dụng các tập dữ liệu KML nhỏ hơn khi người dùng khoan xuống, nhưng chúng tôi cần có khả năng hiển thị tất cả. – theraccoonbear

+0

Tôi sẽ áp dụng một chiến lược tìm kiếm các cụm sự kiện mà bạn có thể giảm xuống thành một đinh ghim trên bản đồ quốc gia và sau đó là siêu liên kết tới một chế độ xem chỉ thành phố đó. Phương pháp này sẽ tương tự nhưng bạn cần phải sử dụng một phiên bản của công thức Haversine để tìm ra những điểm mà là trong "x" dặm. –

Các vấn đề liên quan