2010-02-15 32 views
7

Tôi có một cơ sở dữ liệu chứa các đơn hàng và mỗi đơn đặt hàng có một vị trí liên quan. Currentl, khi người dùng đăng nhập, tôi đang sử dụng Bing Maps API để mã hóa địa lý từng vị trí đơn hàng và sau đó tính toán khoảng cách lái xe cho người dùng đã đăng nhập. Dựa trên những khoảng cách này, người dùng thông qua hộp kéo xuống có thể chỉ định khoảng cách tối đa với kết quả được hiển thị trong chế độ xem lưới. Tuy nhiên, với hơn 100 đơn đặt hàng quá trình này trở nên chậm chạp. Tôi sẽ đánh giá cao một số lời khuyên về tối ưu hóa các truy vấn bing, có thể bộ nhớ đệm kết quả (để chúng có thể được tái sử dụng mà không cần xử lý các bản đồ bing api) hoặc sử dụng Ajax để xử lý nền nào đó. Cảm ơn.Tối ưu hóa Bản đồ Bing Yêu cầu mã hóa địa lý và RouteMapping

Trả lời

1

Tôi đang lên kế hoạch để làm điều gì đó tương tự trong tương lai gần, vì vậy tôi có một vài gợi ý, nhưng không có mã thực tế để chia sẻ. Tôi hy vọng nó rất hữu ích.

Tôi dự kiến ​​lưu trữ lat/lon cho từng mục trong db của tôi (do đó chỉ mã hóa địa lý một lần). Để chọn các mục trong một khoảng cách nhất định từ một quan điểm, tôi sẽ tính toán lat/lon con số đó là 'x' dặm về phía bắc/nam/đông/tây của điểm trung tâm của tôi. Sau đó, việc lựa chọn trở thành một vấn đề đơn giản khi chọn các bản ghi mà giá trị lat/lon nằm giữa các giá trị của hình vuông của tôi.

Và có, tôi biết rằng về mặt kỹ thuật tôi nên sử dụng một vòng tròn để kiểm soát chính xác khoảng cách, nhưng điều này dễ dàng hơn và nhanh hơn nhiều. Nếu bạn thực sự cần sử dụng vòng tròn để có giới hạn chính xác hơn, hãy sử dụng phương pháp này trước, sau đó sử dụng các phép tính phức tạp hơn để loại bỏ các mục bên ngoài vòng tròn ở các góc.

Tôi không quen thuộc với giấy phép của Bing, nhưng nếu tôi nhớ chính xác về google, bạn cần phải có giấy phép trả tiền (thương mại) để lưu trữ kết quả mã hóa địa lý. Và nó không phải là rẻ. Vì vậy mà có thể phủ nhận bất kỳ giá trị đề nghị của tôi có thể có :(

Chỉnh sửa;. Tôi chỉ đọc những câu hỏi một chút cẩn thận hơn, và tôi thấy rằng nó đang nói về dặm lái xe, dặm không tuyến tính Vì vậy, câu trả lời của tôi isn' t thực sự áp dụng, trừ khi bạn muốn sử dụng nó như là một cách để thu hẹp số lượng tính toán khoảng cách lái xe bạn phải làm.

Ngoài ra, về chủ đề mã hóa địa lý và giấy phép, bạn có thể xem geocoder.us.

0

Điều bạn có thể muốn làm là tạo một cây bao trùm tối thiểu giả sử bạn có cùng một vị trí đích cho người dùng. MST vẫn là O (V^2), nhưng bạn đang lưu vào bộ nhớ đệm hiệu quả nhiều của những con đường ngắn nhất vì nhiều người trong số họ sẽ tái sử dụng cùng một con đường.

lựa chọn khác là để ước lượng sử dụng khoảng cách tuyến tính đầu tiên như một sự thay thế cho dặm đường, nhưng tất cả phụ thuộc vào những gì bạn đang gửi lại cho người dùng.

Chúc may mắn!

+0

MST sẽ giúp bạn như thế nào cho những con đường ngắn nhất? Làm thế nào để quyết định xem bạn có thể đi dọc theo MST và sử dụng 'cache' hay không? – Karussell

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