Как я могу получить расстояние с помощью карт Google? - PullRequest
1 голос
/ 01 августа 2011

Если вы попытаетесь получить расстояние:

Kalyani Nagar, Wadgaon Sheri, Pune, Maharashtra, India
Karve Nagar, Hingne Budrukh, Pune, Maharashtra, India

с этим URL мы получаем расстояние 3.4953372691389 миль

http://www.sudhirhub.com/2010/05/find-distance-between-two-cities-using.html

в maps.google.com вы получите:

N Main Road 8.8 mi

Это расстояние по дороге, поэтому расстояние слишком велико.

Есть ли какой-либо запрос API / Any CURL, который даст мне то же расстояние, что и maps.google.com?

Ответы [ 2 ]

0 голосов
/ 01 августа 2011

Посмотрите на пример здесь . Все, что вам нужно сделать, это запросить этот URL и запустить результаты через json_decode(). Что-то вроде:

$result = file_get_contents('http://maps.googleapis.com/maps/api/directions/json?origin=Chicago,IL&destination=Los+Angeles,CA&waypoints=Joplin,MO|Oklahoma+City,OK&sensor=false');
$result = json_decode($results);
$distance = $result->routes->legs->distance['text'];
echo $distance // Outputs: "583 mi"
0 голосов
/ 01 августа 2011

попробуйте это

rad = function(x) {return x*Math.PI/180;}

distHaversine = function(p1, p2) {
  var R = 6371; // earth's mean radius in km
  var dLat  = rad(p2.lat() - p1.lat());
  var dLong = rad(p2.lng() - p1.lng());

  var a = Math.sin(dLat/2) * Math.sin(dLat/2) +
      Math.cos(rad(p1.lat())) * Math.cos(rad(p2.lat())) * Math.sin(dLong/2) *          Math.sin(dLong/2);
  var c = 2 * Math.atan2(Math.sqrt(a), Math.sqrt(1-a));
  var d = R * c;

  return d.toFixed(3);
 }

Или используйте

Убедитесь, что вы включили в свою головную секцию.

 <script type="text/javascript" src="http://maps.google.com/maps/api/js?sensor=false&v=3&libraries=geometry"></script>

и вызов будет

google.maps.geometry.spherical.computeDistanceBetween (latLngA, latLngB);

Ссылка

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...