
1 什么是网络服务?
Google Maps API 提供这些网络服务作为从外部服务中请求 Google Maps API 数据以及在您的地图应用程序中使用它们的接口。这些网络服务使用特定网址的 >
一个典型的网络服务请求通常采用以下形式:
htt p:/ /mapsg oogl eco m/maps/api/service/outputparameters
其中 service 表示所请求的特定服务,output 表示响应格式(通常为 json 或 xml)。
2地址解析与反地址解析
地址解析是将地址(如“1600 Amphitheatre Parkway, Mountain View, CA”)转换为地理坐标(如纬度 37423021 和经度 -122083739)的过程,您可以根据转换得到的坐标放置标记或定位地图。Google Geocoding API 可让您通过 >
3 地址查询(反向地址解析)请求
Google Geocoding API 请求必须采用以下形式:
htt p:/ /mapsg oogl ec om/maps/api/geocode/outputparameters
其中,output 可以是以下值之一:
json(建议)表示以 JavaScript 对象表示法 (JSON) 的形式输出
xml 表示以 XML 的形式输出
有些参数是必需的,有些是可选的。根据网址的标准,所有参数均使用字符 & (&) 分隔。下面枚举了这些参数及其可能的值。
Google Geocoding API 使用以下网址参数定义地址查询请求:
latlng(必需)- 您希望获取的、距离最近的、可人工读取地址的纬度/经度文本值。
bounds(可选)- 要在其中更显著地偏移地址解析结果的可视区域的边框。
region(可选)- 区域代码,指定为 ccTLD(“顶级域”)双字符值。
language(可选)- 传回结果时所使用的语言。请注意,我们会经常更新支持的语言,因此该列表可能并不详尽。如果未提供 language,地址解析器将尝试尽可能使用发送请求的区域的本地语言。
sensor(必需)- 指示地址解析请求是否来自装有位置传感器的设备。该值必须为 true 或 false。
注意:bounds 和 region 参数只会影响地址解析器返回的结果,但不能对其进行完全限制。
实例一:创建查询坐标(39910093,116403945)的地址信息的请求,要求以xml格式输出响应,语言为简体中文(zh-CN)。
注意:经纬度书写的顺序为(纬度,经度)。
实例二:利用C#在客户端程序中创建上述请求。
1 WebClient client = new WebClient();
2 string url = "htt p:/ /m apsg oogl eco m/maps/api/geocode/xm llatln g=39910 093,116403945&language=zh-CN&sensor=false";
3 clientEncoding = EncodingUTF8;
4 string responseTest = clientDownloadString(url);
5 地址查询(反向地址解析)响应
地址解析响应将以网址请求路径中的 output 标记所指示的格式传回。XML 响应包含一个 <GeocodeResponse>和两个顶级元素:
<status> 包含请求中状态代码。(非常重要)
零或多个 <result> 元素,每个元素都包含单独的一组地址解析地址信息和几何图形信息。
地址解析响应对象中的 "status" 字段包含请求的状态,并且可能包含调试信息,以帮助您追溯地址解析未正常工作的原因。
"status" 字段可能包含以下值:
"OK" 表示未发生错误;地址成功进行了解析并且至少传回了一个地址解析结果。(判断请求是否成功响应)
"ZERO_RESULTS" 表示地址解析成功,但未返回结果。如果地址解析过程中传递的偏远位置 address 或 latlng 并不存在,则会出现这种情况。
"OVER_QUERY_LIMIT" 表示您超出了配额。
"REQUEST_DENIED" 表示您的请求被拒绝,通常是由于缺少 sensor 参数。
"INVALID_REQUEST" 通常表示缺少查询参数(address 或 latlng)。
实例一:在IE浏览中输入上述实例一中的请求,查看响应结果。
浏览器中显示如下信息(该截图只是响应结果的部分信息):
实例二:通过控制台输出上述实例二的响应。
C#代码:
1 using System;
2 using SystemCollectionsGeneric;
3 using SystemLinq;
4 using SystemText;
5 using SystemNet;
6
7 namespace GeoCodeTest
8 {
9 class Program
10 {
11 static void Main(string[] args)
12 {
13 WebClient client = new WebClient();
14 string url = "ht tp:/ /mapsgo oglec om/maps/a pi/geocode/xmllatlng=39910093,116403945&language=zh-CN&sensor=false";
15 clientEncoding = EncodingUTF8;
16 string responseTest = clientDownloadString(url);
17
18 ConsoleWrite("{0}",responseTest);
19
20 ConsoleRead();
21
22 }
23 }
24 }
输出结果(该截图只是响应结果的部分信息):
5 处理响应结果
通过上述内容,我们已经能够得到xml响应信息。但是,响应结果包含很多信息,因此我们需要解析出需要的地址信息。具体实现过程为:
第一步:判断status的状态信息。
第二步:获取formatted_address 地址信息。
注意:formatted_address是一个字符串,包含此位置的人类可读地址。通常该地址相当于“邮政地址”,有时会因不同国家/地区而存在差异。
实现代码如下:
View Code
在百度地图的右上角,点击“地图API”。
在地图API页面,把鼠标移动到“工具”菜单项,在下拉菜单中选择“坐标拾取工具”。
比如在搜索栏输入“百度大厦”点击搜索,就会在地图上出现相应的标记,点击你要找的某一个,就能看到相应的坐标。
同理,把找到的坐标输入到搜索栏,把后面“坐标反查”给勾上,点击搜索,就会对应的坐标打上标记,同时会有相应地址在最右边。
同时,把鼠标在地图上滑行,就可以看到,鼠标滑到每一个地方,都会对应显示坐标。
不能直接由经纬度获取地址,只能手动查找。
在百度地图的右上角,点击“地图API”。
在地图API页面,把鼠标移动到“工具”菜单项,在下拉菜单中选择“坐标拾取工具”。
比如在搜索栏输入“百度大厦”点击搜索,就会在地图上出现相应的标记,点击你要找的某一个,就能看到相应的坐标。
同理,把找到的坐标输入到搜索栏,把后面“坐标反查”给勾上,点击搜索,就会对应的坐标打上标记,同时会有相应地址在最右边。
同时,把鼠标在地图上滑行,就可以看到,鼠标滑到每一个地方,都会对应显示坐标。
使用第三方jar包 jts包 例子如下面 \x0d\\x0d\//一个面所包含的经纬度(标准的经纬3600000) \x0d\String str = "POLYGON ((419164412 143703543, 419164481 143702737, 419164494 143702527,419164412 143703543))"; \x0d\WKTReader wkt = new WKTReader(); \x0d\Geometry geojudge1 = wktread(str); \x0d\int xpoi = 419164481; \x0d\int ypoi = 143702737; \x0d\Geometry geojudge2 = wktread("POINT(" + xpoi + " " + ypoi + "))"); \x0d\\x0d\if(geojudge1intersects(geojudge2)) { \x0d\Systemoutprintln("xpoi、ypoi 在这个面里"); \x0d\} \x0d\\x0d\ps:在构成一个面的时候,第一个点的经纬度一定要与最后一个点的经纬度相同。否则会报错误:javalangIllegalArgumentException: points must form a closed linestring
要想得到数据必须先得到百度地图的接口,不然怎么调用接口获取数据呢,首先我们在百度首页输入“百度api”回车后第一个就是我们要找的,点击进入。
我们是通过网页获取json数据得到的数据,所以我们选择“开发”-》“Web服务API”点击进入。
进入这个页面后,我们选择“开发指南”-》“Geocoding API”选择这个进入我们想要的接口文档
4
在这里我们找到通过请求get方式的url,这个url可以通过经纬度获取到地址跟省市,看自己需要什么样的返回格式,有两种,一种是json格式,另一种是xml格式,我们选择json格式的进行测试。
步骤阅读
5
我们直接用url打开,get请求后获取到的数据,可以看到地址省市县这些都有,可以获取经纬度旁
以上就是关于如何通过经纬度获取地址信息全部的内容,包括:如何通过经纬度获取地址信息、ios百度地图怎么通过经纬度获取位置信息、百度地图怎么根据经纬度获取地址等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)