为中国用户动态切换Google Maps API URL

时间:2016-08-26 14:08:56

标签: javascript jquery google-maps google-maps-api-3

这个问题不是为什么中国大陆的坐标不正确。我已经知道中国的法律背后有他们的秘密算法,但更重要的是,中国的服务器必须用来准确地绘制中国的地图数据。

根据谷歌的说法,他们的中文服务器托管在maps.google.cn,而世界其他地方使用maps.google.com(注意不同的TLD)。

我希望能够使用.com作为默认值嵌入地图,并在查看中国时切换到.cn。我可以进行地理定位查询以确定浏览器位置并加载相关API,这对中国用户来说效果很好,但这对中国以外的用户(或使用VPN的用户)在查看大陆时不起作用。 / p>

据我所知,在同一文档中加载和使用这两种API是不可能的。如果有人知道如何解决这个问题,请发帖回答。接下来最好的事情是为用户提供一个链接,实际上是使用正确的API重新加载页面。

所以,我的问题。在查看Google maps in a browser时,地图右下角包含谷歌页脚及其版权和条款。此外,至少对我来说,有maps.google.cn的链接。然而,在我自己的代码和我在网上发现的每个嵌入式示例中,它都不存在。更改网址中传递的regionlanguage无效。

如何将此链接显示在我自己的嵌入式地图中?或者,“谷歌在中国”问题还有另一种解决方法吗?

1 个答案:

答案 0 :(得分:3)

您可以使用的一种技术是使用JavaScript动态加载Maps API。您可以动态构建一个<script src="...">标记,而不是在网站中对 var script = document.createElement('script'); script.type = 'text/javascript'; script.src = 'https://maps.googleapis.com/maps/api/js?v=3.exp&callback=initialize&key=<YOUR KEY HERE>'; document.body.appendChild(script); 标记进行硬编码,也可以根据检测到的用户位置更改网址。

script.src

当用户在中国时,您的代码将负责将http://maps.google.cn/...值更改为myDf %>% mutate_each_( funs(as.numeric(.)), names( .[,sapply(., is.integer)] ))