Google 地图 API 结果与地点结果 return 不同的名称

Google Maps API results vs place results return different names

我正在使用 google 地图提供前往网站内多个位置的路线。用户位于日本,但不是日本人,因此结果应为英文。

在某些示例中,即使名称在查询参数中,link 也像这样 location,returns 另一个日本地名(主教座圣堂牧师馆) , 而不是 "St. Andrew's Tokyo."

这个 link 是动态生成的,所以我可以根据需要更改参数,但我不知道如何在不对整个代码进行硬编码的情况下强制生成看起来更像 this 的结果link。这是构建 URL:

//handle directions links; send to Apple Maps (iOS), or Google Maps (everything else)
var iOS = !!navigator.platform && /iPad|iPhone|iPod/.test(navigator.platform);
$body.on('click', 'a.tsml-directions', function(e){
    e.preventDefault();
    var directions = (iOS ? 'maps://?' : 'https://maps.google.com/?') + $.param({
        daddr: $(this).attr('data-latitude') + ',' + $(this).attr('data-longitude'),
        saddr: 'Current Location',
        q: $(this).attr('data-location')
    });
    window.open(directions);
});

我看过你的样本 URL https://www.google.com/maps?daddr=35.6603676,139.7444553&saddr=Yotsuya,%20Shinjuku,%20Tokyo%20160-0004&q=St.%20Andrew%27s%20Tokyo.

我了解到您的意图是在 Google 地图上获取路线。在前面提到的 URL 中,您指定起点 saddr 和终点 daddr 的参数,在这种情况下,q 参数不应影响方向。所以,目的地址就是坐标35.6603676,139.7444553。当我对该坐标进行反向地理编码时,我得到了 'Japan, 〒105-0011 Tōkyō-to, Minato-ku, Shibakōen, 3 Chome−6−18 主教座聖堂牧師館' 地址,如 Geocoder 工具中所示:

https://google-developers.appspot.com/maps/documentation/utils/geocoder/#q%3D35.660368%252C139.744455

主教座聖堂牧師館 对应前提地址组件,我怀疑它在 Google 数据库中没有翻译成英语,因为语言设置为英语的 Web 服务调用 returns 这个组件在以及原始语言

https://maps.googleapis.com/maps/api/geocode/json?latlng=35.6603676%2C139.7444553&language=en&key=YOUR_API_KEY

如果您的目的地应该是圣安德鲁斯,请将其用作目的地参数。

最重要的部分:Google 有 Google Maps URLs 作为构造 URL 的官方推荐和记录方法。我建议使用此 API 来创建您的路线 URL。这些 URL 是跨平台的,因此无需为 iOS、Android 或网络浏览器创建不同的 URL。

您的示例将转换为

https://www.google.com/maps/dir/?api=1&origin=Yotsuya,%20Shinjuku,%20Tokyo%20160-0004&destination=St.%20Andrew%27s%20Tokyo&travelmode=driving

结果如截图所示

您的代码可能类似于

$body.on('click', 'a.tsml-directions', function(e){
    e.preventDefault();
    var directions = 'https://www.google.com/maps/dir/?' + $.param({
        api: "1",
        destination: $(this).attr('data-location'),
        travelmode: "driving"
    });
    window.open(directions);
});

注意我没有指定 origin 参数,因为它是可选的,在这种情况下,它应该被解释为我的当前位置。

希望对您有所帮助!