Неверное расстояние на карте

хорошо, я думаю, что я все испортил из-за отказа мозга.

Я последовал примеру Google «phpsqlsearch_v3»:

  • импортировал файл sql
  • изменить запрос с показа миль в километрах
  • тестирование с помощью этого:

    phpsqlsearch_genxml.php?lat=37.315903&lng=-121.977928&radius=40
    

все работает как шарм …

введите описание изображения здесь

зайти на сайт, чтобы получить латлонг, добавить и изменить некоторые данные в БД
сейчас я меняю phpsqlsearch_genxml.php к ….

phpsqlsearch_genxml.php?lat=59.627847&lng=17.838589&radius=40

…ничего … однако, если я изменю радиус на 8000, он будет работать, но расстояние для мест вокруг входа будет как 5665.231121242624км, но если я переверну вход, потому что я на правой стороне земли мерцать мерцать в

phpsqlsearch_genxml.php?lat=17.838589&lng=59.627847&radius=100

это даст мне более точный результат, однако … результат должен быть ближе и около 1-2 км …

предложение что делать сейчас?

1

Решение

function getAddress($lat, $lng) {
$use_curl = false;
if ($use_curl) {
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, "http://maps.googleapis.com/maps/api/geocode/json?latlng=" . $lat . "," . $lng . "&sensor=true");
curl_setopt($ch, CURLOPT_HEADER, true);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_BINARYTRANSFER, 1);
curl_setopt($ch, CURLOPT_HTTPHEADER, Array (
"Content-type: application/binary"));
curl_setopt($ch, CURLOPT_POST, 1);
$response = curl_exec($ch);
if (curl_errno($ch))
return -1;
$header_size = curl_getinfo($ch, CURLINFO_HEADER_SIZE);
$str = substr($response, $header_size);
curl_close($ch);
$data = json_decode($str, true);
if (isset($data["results"]) && is_array($data["results"])) {
$street = $data["results"][0]["formatted_address"];
$ac = $data["results"][0]["address_components"];
$len = count($ac);
$i = 0;
$city = "";
while ($i<$len) {
if (in_array("locality", $ac[$i]["types"])) $city = $ac[$i]["long_name"];
else if (in_array("country", $ac[$i]["types"])) $city .= ",".$ac[$i]["short_name"];
$i++;
}
$meta = array(
"status"=>200,
"message"=>"Succeed.");
return array("meta"=>$meta, "response"=>array("address"=>$street, "city"=>$city));
} else {
$meta = array(
"status"=>406,
"message"=>"Address is not known.");
return array("meta", $meta);
}
} else {
$str = @file_get_contents("http://maps.googleapis.com/maps/api/geocode/json?latlng=" . $lat . "," . $lng . "&sensor=true");
$data = json_decode($str, true);
if (isset($data["results"]) && is_array($data["results"])) {
$street = $data["results"][0]["formatted_address"];
$ac = $data["results"][0]["address_components"];
$len = count($ac);
$i = 0;
$city = "";
while ($i<$len) {
if (in_array("locality", $ac[$i]["types"])) $city = $ac[$i]["long_name"];
else if (in_array("country", $ac[$i]["types"])) $city .= ",".$ac[$i]["short_name"];
$i++;
}
$meta = array(
"status"=>200,
"message"=>"Succeed.");
return array("meta"=>$meta, "response"=>array("address"=>$street, "city"=>$city));
} else {
$meta = array(
"status"=>406,
"message"=>"Address is not known.");
return array("meta"=>$meta);
}
}
}
0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]