Google Map Web服务API

来源:csdn博客 分类: 谷歌地图 发布时间:2020-03-18 22:04:26 最后更新:2020-03-18 浏览:1296
转载声明:
本文为摘录自“csdn博客”,版权归原作者所有。
温馨提示:
为了更好的体验,请点击原文链接进行浏览
摘录时间:
2020-03-18 22:04:26

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 并创建密钥,请执行以下操作:

  1. 访问 API 控制台(网址为 https://code.google.com/apis/console)并使用您的 Google 帐户登录。
  2. 您首次登录控制台时,系统会为您创建一个名为 API Project 的默认项目。您可以使用该项目,也可以通过点击窗口顶部的 API 项目 (API Project) 按钮来创建一个新项目。
  3. 在 Places API 列表中点击激活,然后点击确定,以继续操作。
  4. 如果系统弹出提示,请选择要与此产品配合使用的 Google 帐户。在开发人员预览期间,您必须选择要用于接收邀请的帐户。点击允许
  5. 仔细阅读并接受服务条款。随后您会返回主控制台页面。
  6. 点击左侧导航栏中的 API 访问 (API access)。您的密钥会列出在此页面上。

 

第二步,拼写发送http请求的url,注意需使用第一步申请的key;

第三步,接收http请求返回的数据(支持json和xml格式)。

1.1.5 接口示例

1)    Place Search

https://maps.googleapis.com/maps/api/place/search/json?location=-33.8670522,151.1957362&radius=500&types=food&name=harbour&sensor=true&key=AIzaSyBMGzm-1zXeLX-QNi9N7ozRJWZlREyYEe4

 

2)   地方详情请求会返回关于某个特定“地方”的更加具体的详情。

A.        URL例子:https://maps.googleapis.com/maps/api/place/details/xml?reference=CoQBcQAAAGVqFYQYyZYbF4bShF9CQcVoDIF5_5F_uWcspB1pBquRwcYdhOElfaKgMfjCX0qUFKgEWuXPyFQmmBmukIAtXWufvXDOr6tQw42Razq18UDkUxb__cnbAFsKTDcLx0dm_WZmNG1LM1lxzpq-ssVv-5ql1laWk68Y95ANtML4N8g4EhCWwGvhtha3bZp8FL5N0vLTGhRJkto62O-z4lktML8NKfLr2i2yOA&sensor=true&language=zh-CN&key=AIzaSyBMGzm-1zXeLX-QNi9N7ozRJWZlREyYEe4

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格式)。

  • 地址解析:根据地址获取坐标  
  1. URL样例:

http://maps.googleapis.com/maps/api/geocode/json?address=china+guangdong+zhuhai+%E8%A1%97%E9%81%93%E5%9C%B0%E5%9D%80&latlng=22.26972711397229%2C113.57751578092575&sensor=true&language=zh-CN

  1. 样例图:

 

注意: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格式)。

  • 地址解析:根据地址获取坐标  
  1. URL样例:

http://maps.google.com/maps/api/directions/xml?origin=22.388412465842766,113.50859642028809&destination=22.372856833227992,113.57305526733398&waypoints=optimize:true&sensor=true&alternatives=true&language=zh-CN&units=metric&region=cn

  1. 样例图:

 

 

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 接口示例

http://maps.googleapis.com/maps/api/distancematrix/json?origins=Vancouver+BC|Seattle&destinations=San+Francisco|Vancouver+BC&mode=bicycling&language=zh-CN&sensor=false

实例讲解:

http://maps.googleapis.com/maps/api/distancematrix/json?origins=Vancouver+BC|Seattle&destinations=San+Francisco|Victoria+BC&mode=bicycling&language=fr-FR&sensor=false

该请求会返回四个元素 - 两个起点乘以两个终点:

 

温哥华到旧金山

温哥华到维多利亚

西雅图到旧金山

西雅图到维多利亚

 

 

结果会以行的形式返回,每行包含一个起点搭配一个对应的终点。

2      收费标准

2.1:使用各 Maps API 的网站和应用程序如果符合以下条件则无需付费:

  1. 每个API每天的地图加载次数不超过 25,000 次
  2. 每天使用样式化地图功能修改的地图加载次数不超过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,000 次超限地图加载
(以美元为单位)

JS Maps API v3

25,000

$4

JS Maps API v3 样式化地图

2,500

$4[1]/$8[2]

Static Maps API

25,000

$4

Static Maps API 样式化地图

2,500

$4[1]/$8[2]

Street View Image API

25,000

$4

JS Maps API v2

25,000

$10

[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来实现。


php技术微信