是否有可能通过反向代理在我的应用程序连接谷歌地图API

Is it possible to connect the Google Maps API through reverse proxy in my app?

本文关键字:应用程序 我的 连接 谷歌地图 API 代理 有可能 是否      更新时间:2023-09-26

我正在开发一个应用程序,我想使用谷歌地图API。

问题是与Google Maps API服务器的连接不稳定。有时可以,但有时会被屏蔽,因为我在中国。

我想到的解决方案是使所有的谷歌地图API请求通过一个反向代理。我可以在美国或香港设置服务器作为反向代理,那里与谷歌地图服务器有稳定的连接。

然后我必须改变我的应用程序中所有谷歌地图api的url指向我的反向代理,代理将proxy_pass所有请求到谷歌地图服务器。

我对此有几个问题:

我该如何实现客户端库?我一定要换吗?如果可以,我可以直接下载Google Maps JavaScript API文件,并将其中url的域名更改为代理服务器的域名吗?

我该如何开发Android和iPhone应用程序呢?我不确定Android和iPhone sdk是否会使用http协议发出请求。如果是,我如何将api的域名替换为代理服务器的域名?

我想也许有一种方法可以捕获我的应用程序中发出的所有http请求,并在它们发送之前修改它们,但在谷歌搜索了一段时间后,我发现很难做到。

那么,Android和iPhone应用程序是否有可能做到这一点?或者是否有更好的方法通过web应用程序来实现?

我还想知道这样做是否值得,因为解决方案似乎相当复杂,使用谷歌地图API不是必要的,因为在我们国家有替代品。我只是更喜欢谷歌地图API,因为它的API风格简洁,而且地图的外观更漂亮。

你的解决方案公然违反了谷歌的条款和条件。

10.1.1 (a)您不得通过服务中提供的技术或手段以外的任何技术或手段,或通过谷歌可能指定的其他明确授权手段,访问或使用地图API或任何内容。例如,您不能通过Maps API以外的接口或通道(包括未归档的Google接口)访问地图块或图像。https://developers.google.com/maps/terms

撇开法律问题不谈,我认为你回答了自己的问题。"谷歌地图API不是必需的,因为在我们国家有替代品"。

但如果你执意使用谷歌地图,你可以使用他们的瓷砖与第三方库,如网页内容的传单。原生手机应用是一个完全不同的问题……我怀疑要么a:不可能,要么b:不可行。

顺带一提,这个来自Google的文档说明缓存地图图像是可以接受的。

https://developers.google.com/maps/premium/optimize-web-services缓存

对接受答案的重大更正:

引用的10.1.1节不再存在。此外,搜索术语"授权"或";除了;"条款&条件(T&C)对于类似的替换返回没有匹配。

总之,在阅读本条款后,谷歌似乎不再明确规定您不得通过服务中提供的技术或手段以外的任何技术或手段访问或使用地图API或任何内容谷歌似乎也没有提供替代

C here: https://cloud.google.com/maps-platform/terms/

有一个Google实验室使用Google Places API: Google Maps Web Services Proxy for Mobile Applications

似乎这是repo: https://github.com/googlecodelabs/google-maps-web-services-proxy