Карты Google получают долготу

#php #google-maps

#php #google-карты

Вопрос:

Я использую Google Maps API для получения координат местоположений, используя следующий код:

 $q = "Miami Florida"; //example location to query
$api_key = "ABQIAAAA...";

$handle = fopen("http://maps.google.com/maps/geo?q=".urlencode($q)."amp;sensor=falseamp;oe=utf8amp;gl=enamp;output=csvamp;key=".$api_key,"r");
$data = fgetcsv($handle); ?>

<?php echo $data[0]; ?> <br />
Latitude: <?php echo $data[2]; ?> <br />
Longitude: <?php echo $data[1]; ?> 
  

Он возвращает правильную широту (25.7889689), но долгота всегда состоит из одной цифры, такой как 4 или 5.. Это происходит с любым местоположением, которое я запрашиваю. Также данные [0] должны быть поиском точности, но он возвращает 200 .. не уверен, правильно ли это.

Ответ №1:

Вы используете неправильный индекс для обозначения долготы

http://maps.google.com/maps/geo?q=new haven ctamp;sensor=falseamp;oe=utf8amp;gl=enamp;output=csv

Вы хотите $data[3] .

$data[1] является ли точность

Ответ №2:

Первый элемент — это код ответа сервера, который в вашем случае равен 200, сообщающий вам, что он прошел успешно. Второй элемент — это точность. Третий и четвертый — это широта и долгота соответственно.

Когда я ввел http://maps.google.com/maps/geo?q=23943amp;sensor=falseamp;oe=utf8amp;gl=enamp;output=csv в моем браузере я получил следующий вывод:

200,5,33.4954920,-86.8094808

Если вы замените вывод csv на json, вы получите более понятную для пользователя версию.