2010-02-19 36 views

Trả lời

29

Giả sử bạn đang tìm kiếm geographic distance, trước tiên bạn cần phải nhận được vĩ độ và kinh độ của hai postcodes của bạn với Google Maps server-side geocoding services như trong ví dụ sau:

$url = 'http://maps.google.com/maps/geo?q=EC3M,+UK&output=csv&sensor=false'; 

$data = @file_get_contents($url); 

$result = explode(",", $data); 

echo $result[0]; // status code 
echo $result[1]; // accuracy 
echo $result[2]; // latitude 
echo $result[3]; // longitude 

Sau đó, bạn có thể tính toán khoảng cách giữa các tọa độ hai postcodes của bạn bằng cách sử dụng một thực hiện great-circle distance như sau:

Lưu ý rằng dịch vụ mã hóa địa lý phía máy chủ chỉ có thể được sử dụng kết hợp với hiển thị kết quả trên bản đồ Google; kết quả mã hóa địa lý mà không hiển thị chúng trên bản đồ bị cấm bởi Google Maps API Terms of Service License Restrictions.


UPDATE:

Nếu bạn đang tìm kiếm những khoảng cách lái xe thay vì khoảng cách địa lý, lưu ý rằng không có phương pháp ghi nhận và được chấp thuận vào lúc này để truy cập vào Google Maps API hướng dẫn thông qua một Yêu cầu HTTP ở phía máy chủ.

Tuy nhiên, một phương pháp không có giấy tờ mà trả về một kết quả JSON như sau:

http://maps.google.com/maps/nav?q=from:London%20to:Dover 

này sẽ trả lại cho bạn những chỉ dẫn lái xe, cùng với tổng khoảng cách lái xe ở định dạng JSON: "meters":122977.

Định dạng của thông số q phải là from:xxx%20to:yyy. Thay thế xxx và yyy bằng điểm bắt đầu và đích tương ứng. Bạn có thể sử dụng vĩ độ và kinh độ thay vì địa chỉ đầy đủ:

http://maps.google.com/maps/nav?q=from:51.519894,-0.105667%20to:51.129079,1.306925 

Lưu ý rằng không chỉ đây là không có giấy tờ, nhưng nó cũng có thể vi phạm các hạn chế 10,1 và 10,5 của Google Maps API Terms and Conditions.

Bạn cũng có thể thú vị trong kiểm tra ra các bài viết liên quan sau đây:

+1

Đây là giải thích tuyệt vời về cách thực hiện. Nhưng hãy lưu ý, vì bạn đang hỏi cụ thể về Vương quốc Anh, nên việc định vị địa lý của Google không chính xác đối với các mã bưu điện ở Vương quốc Anh. Nó có thể là OK cho mục đích của bạn mặc dù, phụ thuộc vào những gì bạn cần. – MarkJ

+0

@Mark: Cảm ơn bạn đã chia sẻ thông tin này về độ chính xác của mã bưu điện ở Vương quốc Anh. –

+1

Điều này tồn tại: https://developers.google.com/maps/documentation/distancematrix/ – malix

0

Hãy nhìn vào danh sách gửi thư đây :

http://groups.google.com/group/Google-Maps-API/browse_thread/thread/71e6aa2c3de66127

Khi bạn quyết định xem bạn muốn có đường thẳng hay khoảng cách lái xe, bạn có thể tính toán nó thật dễ dàng.Bạn không cần phải sử dụng PHP nhưng có những ví dụ.

Nhìn này cũng:

http://groups.google.com/group/google-maps-api/browse_thread/thread/d43de63d05adc62d/1a04053f39a3edf3?lnk=gst&q=calculate+distance#1a04053f39a3edf3

0

API của Google Maps là trong JavaScript, không PHP. Để đạt được những gì bạn muốn, hãy chuyển 2 mã bưu điện thành tọa độ LatLang và sử dụng hàm distanceFrom để tìm khoảng cách giữa chúng.

Hãy xem this article đối với một số mã mẫu.

+0

Có anyway tôi có thể trả về dữ liệu JSON không? Tôi sẽ thực hiện các cuộc gọi AJAX để tăng khoảng cách lái xe giữa 2 nơi. – dotty

+0

Bạn sẽ có thể. Dữ liệu đến từ API Google đã có dạng JSON. Chỉ cần gửi nó trở lại PHP, hoặc phân tích cú pháp nó phía máy khách bằng cách sử dụng Javascript. –

3

Không biết nếu API V3 thay đổi bất cứ điều gì, nhưng tôi đã sử dụng này cho khá trong một và nó vẫn hoạt động:

Từ và đang từng thể hiện dưới dạng vĩ độ, kinh độ (một địa chỉ có lẽ công việc; tôi chắc chắn rằng tôi đã thử nó nhưng không nhớ và tôi đã có tọa độ nào)

$base_url = 'http://maps.googleapis.com/maps/api/directions/xml?sensor=false'; 
$xml = simplexml_load_file("$base_url&origin=$from&destination=$to"); 
$distance = (string)$xml->route->leg->distance->text; 
$duration = (string)$xml->route->leg->duration->text 
2

Xây dựng về câu trả lời của Daniel, bạn có thể sử dụng của Geocoding API Google để có được chiếc xe, giao thông công cộng, đi bộ và khoảng cách đi xe đạp dễ dàng:

$postcode1='W1J0DB'; 
$postcode2='W23UW'; 
$result = array(); 

$url = "http://maps.googleapis.com/maps/api/distancematrix/json?origins=$postcode1&destinations=$postcode2&mode=bicycling&language=en-EN&sensor=false"; 

$data = @file_get_contents($url); 

$result = json_decode($data, true); 
print_r($result); 

Hãy chắc chắn để thay thế & mode = xe đạp với tham số ưa thích của bạn:

  • & mode = lái xe chế độ
  • & = xe đạp
  • & mode = quá cảnh
  • & mode = đi bộ
Các vấn đề liên quan