Google 地图 API 专业版开发人员指南
Google 地图 API 可让您向自己的公共网站添加易于使用的交互式地图,通过帮助客户从您的组织中找到他们真正所需的内容来改善客户体验。这就是该 API 成为全球最受欢迎的地图绘制 API 的原因。当 Google 地图在您的公共网站上起很重要的作用,或者已纳入到内部应用程序中以供您的员工使用时,组织需要一种企业级应用程序来处理大量工作并提供必要的支持。
为何要使用 Google 地图 API 专业版?
Google 地图 API 专业版可提供针对企业的应用程序支持,以满足您的地图绘制应用程序需求。Google 地图 API 专业版所使用的代码库与标准 Google 地图 API 相同,但它还提供以下附加功能和优点:
- 强大的服务级别协议 (SLA)
- 客户支持
- 增加的地址解析限制
- 商业级条款
- 企业内的 Intranet 应用程序支持
- 通过安全的 https 连接对 API 进行访问
Google 地图 API 专业版要求先注册您的网站才能访问这些附加功能。有关详细信息,请联系我们。
本文档介绍了 Google 地图 API 专业版产品特定的使用案例和编码问题。有关所有通用代码的完整文档,请参考现有的 Google 地图 API 文档来使用本指南。
指定“客户端 ID”
要访问 Google 地图 API 专业版的特殊功能,您必须在访问任何专业版 API 库或服务时都提供“客户端 ID”。当注册使用 Google 地图 API 专业版时,可从 Google 企业支持处获得此“客户端 ID”。所有客户端 ID 都以 gme-
前缀开头。
您的客户端 ID 可以与一个或多个网站域关联。对于现有客户而言,您以前通过发布 API 密钥关联到您的专业版帐户的所有域都会自动添加至您的帐户。如果希望获得您当前启用的域的列表,或希望为您的客户端 ID 启用其他域,请联系 Google 企业支持。可为您的客户端 ID 启用的域的数量不限。
注意:此客户端 ID 不是密钥。它只在您授权的域起作用,因此您无需担心它的保密性。当 Google 地图 API 专业版用户使用该地图 API 或它的某项服务时,不再需要进行注册或提供 API 密钥。
使用 sensor
参数跟踪使用情况
现在,使用 Google 地图 API 时,需要指明您的应用程序在任何地图 API 库或服务请求中是否使用传感器(例如 GPS 定位器)确定用户的位置。这对移动设备尤为重要。如果 Google 地图 API 应用程序使用任何形式的传感器来确定访问您的应用程序的设备的位置,则必须通过将 sensor
参数值设置为 true
来声明这一点。
请注意,即使您的应用程序未使用任何位置传感器,仍需要设置 sensor
参数(在本例中设置为 false
)。
访问和加载 API
将地图 API 库或服务加载为专业版应用程序需要通过 client
参数指定客户端 ID。指定该值的具体方式取决于您所使用的库或服务。
使用 client
参数加载 JavaScript API
要使用您的 Google 地图 API 专业版客户端 ID 加载 Google 地图 JavaScript API,需要将额外的 client 参数附加到用来检索 JavaScript 库的网址:
<script src="http://ditu.google.cn/maps?file=api&v=2&client=gme-yourclientid&sensor=false" type="text/javascript"/>
请注意,您无需在该网址中提供 API 密钥,但必须提供 sensor
参数。
Google 地图 API 专业版客户还可以通过 https 访问 Google 地图 JavaScript API。要通过 https 使用 Google 地图 JavaScript API,首先必须由 Google 企业支持允许您的客户端 ID 启用 HTTPS 访问。如果未允许您的客户端使用 https,则请求将重定向到 HTTP。
要通过 https 加载 Google 地图 JavaScript API,需要使用 HTTPS 协议并从以下网址加载 API:
<script src="https://maps-api-ssl.google.com/maps?file=api&v=2&client=gme-yourclientid&sensor=false" type="text/javascript"/>
使用通用加载程序加载 JavaScript API
Google 地图 JavaScript API 现在已与 Google AJAX API 完全集成,如 http://code.google.com/apis/maps/documentation/#AJAX_Loader 中所述。
如果希望通过 Google 地图 API 专业版客户端 ID 加载 Google 地图 JavaScript API,则加载通用加载程序时无需提供 API 密钥:
<script type="text/javascript" src="http://www.google.cn/jsapi"/>
使用通用加载程序加载 Google 地图 JavaScript API 时,需要通过 other_params
选项提供您的客户端 ID:
google.load("maps","2", {"other_params":"client=gme-yourclientid&sensor=false"});
Google 地图 API 专业版客户还可以通过 https 加载 Google 地图 JavaScript API。要通过 https 使用 Google 地图 JavaScript API,首先必须由 Google 企业支持允许您的客户端 ID 启用 HTTPS 访问。
要使用 Google AJAX API 加载程序通过 https 加载 Google 地图 JavaScript API,请先通过 https 加载通用加载程序:
<script type="text/javascript" src="https://www.google.cn/jsapi"/>
加载后,即可使用 google.load()
加载 Google 地图 JavaScript API(如上所示)。
通过 https 提出 Google 地图 JavaScript API 的请求时,如果通过尚未允许启用 https 访问的客户端 ID 使用通用加载程序加载地图 API,则会重定向至 HTTP。
加载 Google Maps API(Flash 版)
您的 Google 地图 API 专业版客户端 ID 还可让您以企业应用程序的形式访问 Google Maps API(Flash 版)。有关 Google Maps API(Flash 版)的完整文档,请访问 http://code.google.com/apis/maps/documentation/flash/。与 JavaScript API 一样,当您访问该 API 时,虽然不需要提供 API 密钥,但却需要传递 client
和 sensor
参数。
注意:Google Maps API(Flash 版)可让使用不低于 1.8b 版 Flash SDK 的专业版客户免去提供 API 密钥的必要。请确保使用不低于 1.8b 的版本编译您的应用程序,以利用无需提供密钥即可访问的功能。现有的应用程序需要用该版本重新编译,才能享受无需提供密钥的支持。
访问 Google Maps API(Flash 版)时,可通过三种方式来提供您的 Google 地图 API 专业版客户端 ID。无论选择哪种方式,都建议您用同一种方式提供您的客户端 ID 和 sensor
参数:
-
将您的客户端 ID 和 sensor 参数作为在 MXML 中声明的 UI 容器对象的属性来提供:
<maps:Map xmlns:maps="com.google.maps.*" id="map" mapevent_mapready="onMapReady(event)" width="100%" height="100%" sensor="false" client="gme-yourclientid"/>
如果您使用 FlexBuilder 或 Flex Framework 开发应用程序,应首选此方法。
-
将您的客户端 ID 和 sensor 参数作为
object
和embed
标签(用于将您的 Flash 应用程序添加到网页)的属性来提供:<div id="map_canvas" name="map_canvas"> <object classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,29,0" width="800px" height="600px"> <param name="movie" value="helloworld.swf"> <param name="quality" value="high"> <param name="flashVars" value="client=gme-yourclientid&sensor=false"> <embed width="800px" height="600px" src="helloworld.swf" quality="high" flashVars="client=gme-yourclientid&sensor=false" pluginspage="http://www.macromedia.com/go/getflashplayer" type="application/x-shockwave-flash"> </embed> </object> </div>
-
直接用 ActionScript 代码将您的客户端 ID 和 sensor 参数作为
Map
对象的属性提供:var map:Map = new Map(); map.sensor = false; map.client = "gme-yourclientid";
如果您使用 Flash CS3 开发应用程序,则需要使用此方法。
Google Maps API(Flash 版)目前尚未启用 https。
使用地图 API 服务
Google 地图 API 专业版客户端 ID 不仅可让您访问具有企业支持的 JavaScript API,而且还可访问现有的任何 Google 地图 API 服务。通过专业版许可使用这些服务可获得更多访问权限和支持。
静态地图 API
Google 静态地图 API 可让您使用通过其网址服务传递的参数构造和检索地图图像。有关 Google 静态地图 API 的完整文档,请访问 http://code.google.com/apis/maps/documentation/staticmaps/。使用专业版客户端 ID 的静态地图 API 请求具有更高的查询限制。
要使用 Google 地图 API 专业版客户端 ID 在网页中嵌入地图图像,请将一个包含您的客户端 ID 的 client
参数附加到静态地图网址,另请传递 sensor
参数值。
http://ditu.google.cn/staticmap?center=40.714728,-73.998672&zoom=12&size=400x400&client=gme-yourclientid&sensor=false
请注意,您无需传递 API 密钥。
Google 地图 API 专业版客户还可通过 https 向静态地图 API 提出请求。要通过 https 使用静态地图 API,首先必须由 Google 企业支持允许您的客户端 ID 启用 HTTPS 访问。
要将地图图像嵌入到通过安全的 https 连接检索的网页,请在您的请求网址中使用备用主机名,如下所示:
https://maps-api-ssl.google.com/staticmap?center=40.714728,-73.998672&zoom=12&size=400x400&client=gme-yourclientid&sensor=false
注意:如果通过 https 使用尚未启用 https 的客户端 ID 进行静态地图 API 请求,那么请求会遭拒绝,并发生状态 400“错误请求”错误。
地址解析服务
Google 地图地址解析服务可让您请求经度和纬度信息以进行地址查询。有关 Google HTTP 地址解析器的完整文档,请访问 http://code.google.com/apis/maps/documentation/services.html#Geocoding_Direct。
要使用 Google 地图 API 专业版客户端 ID 从 Google http 地址解析器请求地址解析,请将一个包含您的客户端 ID 的 client
参数附加到地址解析器网址。
http://ditu.google.cn/maps/geo?q=1600+Amphitheatre+Parkway,+Mountain+View,+CA&output=xml&client=gme-yourclientid&sensor=false
请注意,您无需在该网址中提供 API 密钥,但必须提供 sensor
参数。
Google 地图 API 专业版客户还可通过 https 向地址解析服务提出请求。要通过 https 使用地址解析服务,首先必须由 Google 企业支持允许您的客户端 ID 启用 HTTPS 访问。
要通过 https 使用 Google HTTP 地址解析器请求地址解析,请在您的请求网址中使用备用主机名,如下所示:
https://maps-api-ssl.google.com/maps/geo?q=1600+Amphitheatre+Parkway,+Mountain+View,+CA&output=xml&client=gme-yourclientid&sensor=false
如果通过 https 使用尚未启用 https 的客户端 ID 向地图 API 地址解析服务提出请求,会返回 610 (G_GEO_BAD_KEY
) 地址解析器响应。如果提出的请求超出您的日常吞吐量限制和即时吞吐量限制,可能会返回 620 (G_GEO_TOO_MANY_QUERIES
)。