2009-04-29 45 views

Trả lời

0

cách có thể để giải quyết vấn đề này:

  • Xây dựng JSON trên serverside, tùy thuộc vào zoomlevel (con: nhu cầu tải lại sau một zoom, chuyên nghiệp: chỉ amouts nhỏ dữ liệu cần được tải)
  • Bao gồm thông tin về cách có thể truy cập điểm đánh dấu trong dữ liệu JSON (chuyên nghiệp: chỉ cần tải dữ liệu một lần, con: lặp qua dữ liệu với JavaScript)
  • Tính mốc có thể nhìn thấy trong JavaScript (pro: rất năng động, con: tải tính nặng)
8

Có khái niệm về một "bounding hình chữ nhật" cho một cái nhìn bản đồ. Bản đồ api cung cấp cho bạn hai cặp phối hợp vĩ độ/dài - một cho góc SW, và một cho góc NE. Vì vậy, nếu bạn có dịch vụ dữ liệu tùy chỉnh trả về các điểm JSON, bạn sẽ cần phải chấp nhận các tọa độ này làm đầu vào và điều chỉnh tập dữ liệu trả về cho phù hợp (có thể là mệnh đề WHERE trong câu lệnh SELECT).

Tôi không có chi tiết về hình chữ nhật bị ràng buộc này được ghi nhớ, nhưng đó là những gì API docs cho.

1

Có, tôi đã làm điều gì đó tương tự trong một ứng dụng cho chính quyền địa phương nơi chúng tôi hiển thị khối lượng mỗi ngôi nhà đã tái chế trên 6.000 hộ lẻ. Vì tổng khối lượng dữ liệu (bao gồm địa chỉ và thông tin thống kê cho mỗi hộ gia đình) là khá lớn, kéo toàn bộ tệp dữ liệu trong một lần khiến trình duyệt xuất hiện treo. Vì vậy, thay vào đó trong cuộc gọi AJAX đến cơ sở dữ liệu, chúng tôi đã gửi các tọa độ hình chữ nhật bao quanh (vĩ độ, kinh độ) của khu vực bản đồ sau đó chỉ trả lại những điểm mà chúng tôi nhìn thấy được. Do tính chất của ứng dụng, nút người dùng định hướng 'tìm nạp dữ liệu' khá chấp nhận được, nhưng rõ ràng có rất nhiều biến thể khác bạn có thể phát trên chủ đề - khi bạn đang cung cấp tọa độ giới hạn cho phía máy chủ, bạn có thể quyết định để làm ở đó - ví dụ: chỉ trả lại một tập con nếu mức thu phóng quá cao. Bạn cũng có thể nắm bắt sự kiện vẽ bản đồ và tự động thực hiện thao tác này.

1

Khi thu phóng thay đổi, hãy gửi mức thu phóng mới đến dịch vụ JSON của bạn và trả về các điểm đánh dấu sẽ hiển thị ở cấp đó. Sử dụng addMarkers() để thêm kết quả vào MarkerManager và chỉ hiển thị kết quả ở mức thu phóng hiện tại.

Các câu trả lời khác ở đây đã đề xuất chỉ trả về các điểm đánh dấu trong chế độ xem hiện tại, nhưng bạn cũng có thể trả lại tất cả các điểm đánh dấu ở mức thu phóng đó. Nó phụ thuộc vào bao nhiêu bạn biết về những dấu hiệu bạn muốn hiển thị ở mỗi cấp.

6

Có một thư viện mới mang tên MarketClustered sẽ giúp bạn

alt text http://gmaps-samples.googlecode.com/svn/trunk/images/screenshot_clusterereffect.jpg

Thậm chí nếu các dữ liệu quá lớn, tôi nghĩ rằng sẽ tốt hơn để nuôi bản đồ sẽ tất cả các dữ liệu, và để cho nó làm điều đó.

+7

Bất kỳ thứ gì có khoảng 2.000 điểm đánh dấu với MarkerClusterer quá chậm đối với tôi (đó là trong Firefox - Chrome và Safari 4 đều tốt đến khoảng 8.000). Mặc dù nó phụ thuộc vào độ dày của các điểm đánh dấu. Tôi đồng ý rằng có thể nhập dữ liệu cùng một lúc tốt hơn, thay vì gửi các đoạn khi thay đổi thu phóng. –

+1

Tốt bạn có dữ liệu thực. Nhận xét được bình chọn. –

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