我正在开发一个应用程序,我想在其中使用 Google 地图 API。
问题是与 Google Maps API 服务器的连接不稳定。有时没问题,但有时因为我在中国而被屏蔽。
我提出的解决方案是通过反向代理发出所有 Google Maps API 请求。我可以在美国或香港设置一个服务器作为反向代理,那里与 Google 地图服务器有稳定的连接。
然后我必须更改应用程序中所有 Google 地图 API 的 URL,以指向我的反向代理,并且代理会将所有请求代理传递到 Google 地图服务器。
我对此有几个疑问:
我将如何实施客户端库?我必须改变它们吗?如果是这样,我可以下载 Google Maps JavaScript API 文件并将其中网址的域名更改为我的代理服务器的域吗?
我该如何处理 Android 和 iPhone 应用程序?我不确定Android和iPhone SDK是否会使用http协议发出请求。如果是的话,如何将API的域名替换为我的代理服务器的域名?
我想也许有一种方法可以捕获我的应用程序中发出的所有 http 请求并在发送之前对其进行修改,但在谷歌搜索一段时间后我发现这很难做到。
那么 Android 和 iPhone 应用程序可以做到这一点吗?或者有更好的方法通过网络应用程序来实现它吗?
我还想知道这样做是否值得,因为该解决方案似乎相当复杂,并且使用 Google Maps API 并不是必需的,因为在我们国家有替代品。我只是更喜欢 Google Maps API,因为它简洁的 API 风格和更漂亮的地图外观。
您的解决方案公然违反了 Google 的条款和条件。
10.1.1 (a) 您不得通过服务中提供的技术或方式以外的任何技术或方式或通过 Google 可能指定的其他明确授权方式访问或使用 Maps API 或任何内容。 例如,您不得通过 Maps API 以外的接口或渠道(包括未记录的 Google 接口)访问地图图块或图像。 https://developers.google.com/maps/terms
撇开法律问题不谈,我想你已经回答了你自己的问题。 “Google 地图 API 不是必需品,因为在我们国家有替代品”。
但是,如果您一心想要使用 Google 地图,您可以将其图块与第三方库(例如网页内容的传单)一起使用。原生移动应用程序是一个完全不同的问题...我怀疑它要么是a:不可能,要么b:不可行。
FWIW,Google 的这份文档指出缓存地图图像是可以接受的。
https://developers.google.com/maps/premium/optimize-web-services#cache