2010-04-29 69 views
5

Tôi đã tạo ứng dụng trong CakePHP liệt kê các doanh nghiệp. Có khoảng 2000 mục và vĩ độ và kinh độ cho mỗi doanh nghiệp nằm trong DB.
Tôi hiện đang cố gắng giải quyết chức năng tìm kiếm.Tìm địa điểm gần nhất với một địa chỉ cụ thể

Sẽ có hộp nhập nơi người dùng có thể đặt địa chỉ đường phố, thành phố hoặc mã zip và sau đó tôi muốn trả lại 11 doanh nghiệp gần nhất như được tìm thấy từ cơ sở dữ liệu.

Tôi làm cách nào để thực hiện việc này?

+1

* (liên quan) * http://stackoverflow.com/questions/838344/algorithm-for-finding-nearby-points – Gordon

+0

(liên quan) http://www.artfulsoftware.com/infotree/queries.php?&bw = 1680 # 109 –

Trả lời

2

Tôi sử dụng số Yahoo Geo Planet API để xác định địa điểm tương ứng với cụm từ tìm kiếm mà người dùng đã nhập. Điều này thường khớp với nhiều địa điểm, vì vậy bạn phải trình bày chúng lại cho người dùng để họ chọn đúng địa điểm. Sau đó, khi bạn biết đúng địa điểm và đó là thời gian chờ đợi mà API Yahoo cung cấp, bạn có thể sử dụng số haversine formula để có được các doanh nghiệp gần nhất với vị trí của người dùng. Có một ví dụ hay trong câu trả lời cho this question.

+0

Điều này thực sự hữu ích và gần gũi hơn với những gì tôi đang tìm kiếm, cảm ơn! – xtine

0

Tôi muốn tiếp cận điều này bằng cách tạo một hình vuông xung quanh điểm, để có được điểm chính là toàn bộ chính bạn, vì bạn sẽ cần một cơ sở dữ liệu mã bưu điện hoặc api, có xu hướng tốn tiền. Hoặc là mua cơ sở dữ liệu hoặc tra cứu.

Làm theo thành phố hoặc tương tự ít nhất, bạn có thể chắc chắn, không chắc chắn, trả lại thời gian dài từ GMaps cho thành phố đó.

Sau đó, tôi muốn thử và lấy 4 góc longlat coords quanh điểm đó. Sau đó, tôi có thể tìm kiếm cơ sở dữ liệu cho các giá trị nằm giữa các giá trị đó.

Dù bằng cách nào thì đó cũng là một điều phức tạp mà tôi muốn nói, câu hỏi fab! Quan tâm để xem đề xuất của mọi người.

+0

Dữ liệu điều tra dân số của chúng tôi có thể được sử dụng để tạo cơ sở dữ liệu mã theo độ dài và số liệu thống kê dân số. Tôi đã sử dụng dữ liệu đó trong quá khứ. Nếu bạn google xung quanh, bạn sẽ tìm thấy một cơ sở dữ liệu dài lat so với mã zip ra khỏi đó miễn phí. Và sau đó tìm tất cả các mã zip nằm trong một hình vuông gần một hình vuông được đề cập là khá nhanh chóng và dễ dàng để có được một khoảng cách thực sự tốt nhìn lên. –

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