0

我正在使用谷歌地图来提供前往网站内多个位置的路线。用户在日本,但不是日本人,所以结果应该是英文的。

在某些示例中,即使名称在查询参数中,类似这个location的链接也会返回替代的日本地名(主教座圣堂牧师馆),而不是“St. Andrew's Tokyo”。

这个链接是动态生成的,所以我可以根据需要更改参数,但我不知道如何强制看起来更像这样的结果而不对整个链接进行硬编码。以下是构建 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);
});
4

1 回答 1

1

我查看了您的示例 URL https://www.google.com/maps?daddr=35.6603676,139.7444553&saddr=Yotsuya,%20Shinjuku,%20Tokyo%20160-0004&q=St.%20Andrew%27s%20Tokyo

我了解您的意图是在 Google 地图上获取路线。在上述 URL 中,您为 originsaddr和 destination指定参数,在这种情况下daddr,该q参数不应影响方向。因此,目标地址只是坐标35.6603676,139.7444553。当我对该坐标进行反向地理编码时,我得到“日本,〒5-0011 东京都,港区,芝园,3 Chome−6−18 天主教座1圣堂牧师馆”地址,如地理编码器工具中所示:

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

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

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

如果您的目的地应该是 St. Andrew's,请将其用作目的地参数。

最重要的部分:Google 将Google Maps URL作为官方的、推荐的和记录在案的 URL 构建方法。我建议使用此 API 来创建您的路线 URL。这些 URL 是跨平台的,因此无需为 iOS、Android 或 Web 浏览器创建不同的 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 参数,因为它是可选的,在这种情况下,它应该被解释为我当前的位置。

我希望这有帮助!

于 2018-04-25T11:11:52.907 回答