Google Map Web服务API
1
Google Places API 是一项使用 HTTP 请求返回“地方”(在此 API 中定义为场所、地理位置或著名兴趣点)的相关信息的服务。“地方”请求将位置指定为纬度/经度坐标。
四个基本的“地方”请求:
1) Place Search 会根据用户的位置返回附近的“地方”列表。
2) 地方详情请求会返回关于某个特定“地方”的更加具体的详情。
3) 地方所在位置可让您报告某位用户已到达某个“地方”。“所在位置”用于衡量某个“地方”的热门程度;频繁的报告位置可以提高该“地方”在您应用程序的 Place Search 结果中的排名。
4) 地方报告可让您向“地方”服务添加新的“地方”,还可删除您的应用程序已添加的“地方”。
注意:其中请求URL中的types有如下类型:
// 定义GPS查询中type类型为,以下数字逐个加1,上面为英文,下面为中文描述;
accounting 会计事务所
airport 机场
amusement park 游乐园
aquarium 水族馆
art gallery 艺术画廊
atm 自动取款机
bakery 面包店
bank 银行
bar 酒吧
beauty salon 美容沙龙
bicycle store 自行车店
book store 书店
bowling alley 保龄球馆
bus station 汽车站
cafe 咖啡馆
campground 营地
car dealer 汽车经销商
car rental 汽车出租
car repair 汽车维修
car wash 洗车
casino 赌场
cemetery 墓地
church 教堂
city hall 市政厅
clothing store 服装店
convenience store 便利店
courthouse 法院
dentist 牙科医生
department store 百货商店
doctor 医生
electrician 电工
electronics store 电子商店
embassy 使馆
establishment 编制
finance 金融
fire station 消防局
florist 花商
food 食物
funera home funera家
furniture store 家具店
gas station 加油站
general contractor 总承包商
grocery or supermarket 杂货店或超市
gym 健身房
hair care 护发
hardware store 五金商店
health 健康
hindu temple 印度教寺庙
home goods store 家居用品店
hospital 医院
insurance agency 保险代理
jewelry store 首饰商店
laundry 洗衣店
lawyer 律师
library 文库
liquor store 酒品店
local government office 当地政府办公室
locksmith 锁匠
lodging 住宿
meal delivery 送饭
meal takeaway 餐外卖
mosque 清真寺
movie rental 电影租赁
movie theater 电影院
moving company 搬家公司
museum 博物馆
night club 夜总会
painter 画家
park 公园
parking 停车
pet store 宠物商店
pharmacy 药房
physiotherapist 物理治疗师
place of worship 礼拜场所
plumber 水管工人
police 警方
post office 邮局
real estate agency 地产代理
restaurant 餐厅
roofing contractor 屋面承包商
rv park RV公园
school 学校
shoe store 鞋店
shopping mall 商场
spa 温泉
stadium 体育场
storage 存储
store 存储
subway station 地铁站
synagogue 犹太教堂
taxi stand 的士站
train station 火车站
travel agency 旅行社
university 大学
veterinary care 兽医护理
zoo 动物园
administrative area level 1 行政区域级1
administrative area level 2 2级行政区域
administrative area level 3 行政区域3级
colloquial area 口语化的区域
country 国家
floor 地板
geocode 地理编码
intersection 路口
locality 地方
natural feature 自然特征
neighborhood 附近
political 政治
point of interest 兴趣点
post box 邮政信箱
postal code 邮政编码
postal code prefix 邮递区号前缀
postal town 邮政镇
premise 前提
room 房间
route 路线
street_address 街道地址
street number 门牌号码
sublocality sublocality
sublocality level 4 sublocality4级
sublocality level 5 sublocality5级
sublocality level 3 sublocality3级
sublocality level 2 sublocality2级
sublocality level 1 sublocality1级
subpremise subpremise
transit station 中转站
Google Places API 具有以下查询限制:
- 拥有 API 密钥的用户每24小时内最多可以提出 1 000 个请求。
- 已另外通过 API 控制台验证过身份的用户每 24 小时内最多可以提出 100 000 个请求。验证时需要您提供信用卡信息,您可以在控制台中启用结算。我们不会因您使用 Places API 而从您的信用卡中扣除任何费用。
虽然较低的限制对于研发和测试而言已经足够,但我们建议您在发布应用程序之前启用较高的限制。
第一步,申请API密钥,。您可以通过 Google API 控制台管理 API 密钥。要激活 Places API 并创建密钥,请执行以下操作:
- 访问 API 控制台(网址为 https://code.google.com/apis/console)并使用您的 Google 帐户登录。
- 您首次登录控制台时,系统会为您创建一个名为 API Project 的默认项目。您可以使用该项目,也可以通过点击窗口顶部的 API 项目 (API Project) 按钮来创建一个新项目。
- 在 Places API 列表中点击激活,然后点击确定,以继续操作。
- 如果系统弹出提示,请选择要与此产品配合使用的 Google 帐户。在开发人员预览期间,您必须选择要用于接收邀请的帐户。点击允许。
- 仔细阅读并接受服务条款。随后您会返回主控制台页面。
- 点击左侧导航栏中的 API 访问 (API access)。您的密钥会列出在此页面上。
第二步,拼写发送http请求的url,注意需使用第一步申请的key;
第三步,接收http请求返回的数据(支持json和xml格式)。
1.1.5 接口示例
1) Place Search:
2) 地方详情请求会返回关于某个特定“地方”的更加具体的详情。
B. 样例图:
3) 地方所在位置可让您报告某位用户已到达某个“地方”。“所在位置”用于衡量某个“地方”的热门程度;频繁的报告位置可以提高该“地方”在您应用程序的 Place Search 结果中的排名。
4) 地方报告可让您向“地方”服务添加新的“地方”,还可删除您的应用程序已添加的“地方”。
地址解析是将地址(如“1600 Amphitheatre Parkway, Mountain View, CA”)转换为地理坐标(如纬度 37.423021 和经度 -122.083739)的过程,您可以根据转换得到的坐标放置标记或定位地图。Google Geocoding API 可让您通过 HTTP 请求直接访问地址解析器。此外,该服务还可让您执行反向操作(将坐标转换为地址);此过程称为“反向地址解析”。
Google Geocoding API包括地址解析和逆地址解析功能。
Google Geocoding API 的使用有限制,即,每天 2,500 个地理位置查询请求。(Google Maps API Premier 用户每天最多可执行 100,000 个请求。)强制执行此限制是为了防止滥用和/或重复使用 Google Geocoding API。以后可能对此限制进行更改,而无需另行通知。此外,我们还强制设定了请求速率限制,以防滥用此服务。如果您超过了 24 小时的限制或者滥用此服务,Google Geocoding API 可能会暂停为您服务。如果您继续无视这个限制,将会阻止您对 Google Geocoding API 的访问。
请注意:Google Geocoding API 只能与 Google Maps 配合使用;不能只进行地址解析而不在地图上显示结果。有关允许的用法的完整详细信息,请参见 Google Maps API 服务条款许可限制。
第一步,拼写发送http请求的url,不需要注册Key/密钥
第二步,接收http请求返回的数据(支持json和xml格式)。
- 地址解析:根据地址获取坐标
- URL样例:
- 样例图:
- 逆地址解析:根据坐标获取地址 http://maps.googleapis.com/maps/api/geocode/xml?latlng=22.376190329466173,113.54091167449951&sensor=true&language=zh-CN
注意:Google Directions API 不需要 Maps API 密钥!
Google Directions API 是一种使用 HTTP 请求计算多个位置间路线的服务。路线可以采用文本字符串(如“伊利诺斯州芝加哥市”或“澳大利亚新南威尔士达尔文市”)或纬度/经度坐标的形式指定起点、目的地和路标。Google Directions API 可以使用一系列路标传回多段路线.
Google Directions API 是一种使用 HTTP 请求计算多个位置间路线的服务。
Google Directions API 的使用受每个IP每天 2,500 路线请求的查询限制。单个路线请求可以包含多达8个中间路标。 Google Maps Premier 客户每天最多可以查询 100,000个路线请求,且在每个请求中最多可以使用 23个路标。
此外,在进行网址编码之前,请注意 Directions API 网址长度不得超过 2048个字符。由于某些 Directions 服务网址可能在一条路径中包含多个位置,因此在构建您的网址时请注意此限制。
注意:Google Directions API 只能与 Google Maps 上的显示结果配合使用;下面这种情况是不允许的:使用路线数据而不显示为其请求路线数据的地图。另外,计算路线将会生成必须以某种方式向用户显示的版权和警告。有关允许的用法的完整详细信息,请参见 Google Maps API 服务条款许可限制。
第一步,拼写发送http请求的url,不需要注册Key/密钥;
第二步,接收http请求返回的数据(支持json和xml格式)。
- 地址解析:根据地址获取坐标
- URL样例:
- 样例图:
Google Distance Matrix API 是一项服务,用于为起点和终点的矩阵提供行程距离和时间。系统会根据起点和终点之间的推荐路线(由 Google Maps API 计算)返回信息,并且返回的信息由多行配对的 duration
和 distance
值组成。
该服务并不会返回详细的路线信息。您可以将所需的一对起点和终点传递至 Directions API,以获取路线信息。
Google Distance Matrix API 是一项服务,用于为起点和终点的矩阵提供行程距离和时间,该服务并不会返回详细的路线信息。您可以将所需的一对起点和终点传递至 Directions API/详情见1.3 Google Directions API,以获取路线信息。
1.4.3 使用限制
每条发送至 Distance Matrix API 的查询可使用的元素数量是有限的,其数量由起点数乘以终点数来定义。
Distance Matrix API 目前具有如下限制:
- 每条查询可使用的元素数量为:100。
- 每 10 秒可使用的元素配额为:100。
- 每 24 小时周期内可使用的元素配额为:2 500。
针对 Google Maps API 专业版客户的限制较为宽松:
- 每条查询可使用的元素数量为:625。
- 每 10 秒可使用的元素配额为:1 000。
- 每 24 小时周期内可使用的元素配额为:100 000。
Maps API 专业版客户可以与自己的 Google Enterprise 销售客户经理联系,以购买更多配额。
在进行网址编码前,Distance Matrix API 网址长度的上限为2048个字符。某些 Distance Matrix API 服务网址可能会涉及多个位置,因此您在构建网址时请注意此限制。
注意:使用 Distance Matrix API 的情况必须与 Google Map 上的信息显示有关;例如,在地图上请求并显示某些终点之前,应先确定起点-终点对彼此间的行程时间是否在特定值的范围内。在不显示 Google Map 的应用程序中,您无法使用该服务。
1.4.4 如何使用
第一步,拼写发送http请求的url,不需要申请key/密钥;
第二步,接收http请求返回的数据(支持json和xml格式)。
1.1.5 接口示例
实例讲解:
该请求会返回四个元素 - 两个起点乘以两个终点:
温哥华到旧金山 |
温哥华到维多利亚 |
西雅图到旧金山 |
西雅图到维多利亚 |
|
|
结果会以行的形式返回,每行包含一个起点搭配一个对应的终点。
2 收费标准
2.1:使用各 Maps API 的网站和应用程序如果符合以下条件则无需付费:
- 每个API每天的地图加载次数不超过 25,000 次
- 每天使用样式化地图功能修改的地图加载次数不超过2,500次
如果您的应用程序超出了这些使用限制,那么您必须通过以下某种方法做出回应才能继续在应用程序中使用 Maps API:
- 修改 Maps API 应用程序,以便让每天产生的地图加载次数低于应用程序使用的各 API 的使用限制;
- 启用超限地图加载次数的自动结算功能;或
- 购买 Maps API Premier 许可
致力于公益事业的非盈利性网站和应用程序(其范围由 Google 自行决定)没有这些使用限制。例如,即使某个救灾地图是由商业实体开发和/或托管的,该地图也不会有使用限制。此外,我们还建议有资格的非盈利性网站和应用程序通过 Google Earth Outreach 计划申请 Maps API Premier 许可。此许可能为您带来许多优势,包括停用广告的权利、更高的 Maps API 网络服务配额和技术支持。
我们在此处提供了要计入“地图加载次数”的情况的精确定义。您可以在此处找到有关费用的详情。
2.2:超限地图加载次数的在线购买费用是多少?
在符合 Google Maps API 服务条款相关要求的情况下,地图加载次数低于使用限制的应用程序无需付费即可使用 Maps API。超出使用限制的地图加载次数按以下标准收费:
[1] - 每天的地图加载次数在 2,500 到 25,000 次之间
[2] - 每天的地图加载次数超过 25,000 次
我们不会在线提供针对 Maps API for Flash 的超限地图加载次数。如果网站使用 Maps API for Flash 并超出了使用限制,就应该迁移至 JS Maps API v3;此外,您也可以购买 Maps API Premier 许可。
您可以通过 Google API 控制台在线购买超限地图加载次数。使用情况每天计算一次,超限部分每月通过信用卡结算一次。请注意,如果您的网站每天产生的地图加载次数较多,那么购买 Maps API Premier 许可可能会更划算。
另请注意,除了根据现有的服务条款继续使用 Maps API 的权利外,在线购买超限地图加载次数并不会获得任何额外的权利或权益。
2.3:详解见Google Maps API for Business - Purchase Agreement
https://www.google.com/enterprise/earthmaps/legal/us/maps_purchase_agreement.html
3 破解方案(供参考)
GoogleMap Geocoding API 地址解析受限的解决办法
最近在做GoogleMap地址解析的事情,就是把现有的地址匹配上经纬度,不过无奈的发现Google是有限制的:Google Geocoding API 的使用有限制,即,每天 2,500 个地理位置查询请求。(Google Maps API Premier 用户每天最多可执行 100,000 个请求平【每年1W美金】。)强制执行此限制是为了防止滥用和/或重复使用 Google Geocoding API。以后可能对此限制进行更改,而无需另行通知。此外,我们还强制设定了请求速率限制,以防滥用此服务。如果您超过了 24 小时的限制或者滥用此服务,Google Geocoding API 可能会暂停为您服务。如果您继续无视这个限制,将会阻止您对 Google Geocoding API 的访问。
所以就想一些解决办法绕过它,方法一:通过Google自己的GAE做代理,参见一个网上的帖子http://maosuhan.iteye.com/blog/724278,经过半天的尝试,主要是配置GAE的工作,参见http://blog.163.com/redsnow_cc/blog/static/17262058720111142433649/,再加上我自己写的web版的请求googlemap测试程序,发现也是有限制的,返回的结果也是Over_Query_Limit,经过分析,此种方法不行,仔细看了一下帖子是2010年的,两年前的帖子,而且无此种类似的帖子和跟帖,分析是google发现了这个漏洞,修复掉了,所以此后没有人跟进了。
方法二:也是通过代理的方式,但是使用多个代理,每个代理可以访问2500个,那么用100代理就可以返回250000个,用400个代理就可以解决掉100万个了,满足要求了,但是发现网上只有一个这样的帖子,经过分析,这种代理都不稳定,而且实现起来比较复杂,pass。
方法三:通过Windows services实现,每天进行2500个请求,要实现100万个地址的请求,得需要一年的时间,这种办法已经实现了,但是比较难的应用到实际应用中了,如果解析地址的数量比较少还可以,如果超过10万个了,时间久比较长了。
综上所述,最好的方法还是购买,如果数量少就用windows services来实现。