Google Maps API и Google Search предоставляет различные широты места - PullRequest
0 голосов
/ 19 сентября 2019

Я пытаюсь получить широту и долготу места, однако оно возвращает значение, отличное от значения, предоставленного поиском Google.

        $url = "https://maps.googleapis.com/maps/api/geocode/json?address=".urlencode($request->address).",US&key=API_KEY";
        try {
            $client = new \GuzzleHttp\Client();
            $apiRequest = $client->request('GET', $url);
            $resp = json_decode($apiRequest->getBody());
        } catch (\Exception $re) {
            return response()->json([
                'sts' => -1,
                'message' => $re->getMessage()],
                500);
        }

        $latitude = $resp->results[0]->geometry->location->lat;
        $longitude = $resp->results[0]->geometry->location->lng;

Итак, для целей тестирования я передал New York какадрес.Он возвращает

[location] => stdClass Object
                    (
                        [lat] => 43.2994285
                        [lng] => -74.2179326
                    )

Однако, когда я Google с ключевым словом lat long of New York возвращает значение

40.7128° N, 74.0060° W

Я не понимаю, почему он возвращает разницу 3 degree, яПонимаю, что может быть небольшая разница, как на этой странице , однако разница в 3 градуса довольно неудобна.Есть что-то, чего мне не хватает?

1 Ответ

0 голосов
/ 21 сентября 2019

Я вижу, что вы геокодировали адрес " Нью-Йорк, США ", в котором геокодер рассматривается как административный район или штат.Пожалуйста, посмотрите результат в инструменте геокодирования здесь , который показывает приблизительное местоположение 43.299429,-74.217933 для штата Нью-Йорк.

С другой стороны, если вы геокодируете адрес " NewЙорк, Нью-Йорк, США", вы должны получить приблизительное местоположение 40.712775,-74.005973, которое относится к Нью-Йорку, который является населенным пунктом.

Надеюсь, это проясняет это.

...