【问题标题】:Google maps api and google search provides different lat lang of a place谷歌地图 api 和谷歌搜索提供不同纬度的地方
【发布时间】:2019-09-19 08:47:39
【问题描述】:

我正在尝试获取某个地方的纬度和经度,但是,它返回的值与谷歌搜索提供的值不同。

        $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
                    )

但是,当我使用关键字lat long of New York 进行谷歌搜索时,它会返回值

40.7128° N, 74.0060° W

我不明白为什么它会返回3 degree 的差异,我知道可能会有一些细微的差异,例如 page,但是 3 度的差异非常不方便。 有什么东西,我可能会失踪吗?

【问题讨论】:

  • 差异可能来自一个使用英里和一个使用公里。你也设置了缩放?这也可能有一些不同
  • 在计算距离时可以使用英里和公里,但是,到目前为止,我只是想获得纬度和经度
  • 那不是你问的,你问为什么两者有区别
  • 我没用过缩放。此外,我从未听说过缩放会影响最终纬度和经度值。而且,到目前为止(获取纬度和经度)我认为与公里和英里都没有任何关系。
  • 我认为是因为“纽约”不仅仅是一个城市,也是一个州。因此,根据您使用的搜索类型或属性,它会返回一件事或另一件事。或者两者兼而有之。它会返回一个结果还是多个?。

标签: laravel google-maps curl google-maps-api-3 geocode


【解决方案1】:

我可以看到您已对地址“美国纽约”进行地理编码,地理编码器将其视为行政区或州。请在地理编码工具here 中查看结果,该工具显示纽约州的大致位置43.299429,-74.217933

另一方面,如果您对地址“New York, NY, USA”进行地理编码,您应该得到40.712775,-74.005973 的大致位置,这是一个地方纽约市。

希望这可以澄清它。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-07-06
    • 1970-01-01
    • 2012-10-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多