7.6 使用Geocoder
地理编码可以在街道地址和经纬度地图坐标之间进行转换。这样,就可以为基于位置的服务,或者基于地图的活动中所使用的位置或者坐标,提供一个可识别的上下文。
Geocoder类提供了对两种地理编码功能的访问:
Forward Geocoding(前向地理编码) 查找某个地址的经纬度
Reverse Geocoding(反向地理编码) 查找一个给定的经纬度所对应的街道地址。
这些调用返回的结果将会通过使用一个局域设置来进行情境化(contextualized),其中区域设置用来定义通常的位置和语言。下面的代码段展示了如何在创建Geocoder的时候设定区域设置。如果没有指定区域设置,那么它将会被假定为你的设备默认的区域设置。
- Geocoder geocoder = new Geocoder(getApplicationContext(),
- Locale.getDefault());
这两种地理编码函数返回的都是Address对象列表。每一个列表都可以包含多个可能的结果,它的上限是在调用函数时指定的。
每一个Address对象都是使用Geocoder所能够解析的尽可能多的细节来填充的。它可以包含经度、纬度、电话号码以及其他一些地址细节,从国家到街道和门牌号。
提示:
Geocoder查找是同步地进行的,因此,它们将会阻塞调用它们的线程。对于低速的数据连接来说,这可能会导致出现一个应用程序不响应的对话框。在大部分情况下,更好的做法是把这些查找移动到服务或者后台线程中,如第8章所示。
为了清晰和简洁起见,本章的代码中出现的对这些函数的调用都放在了主应用程序线程中。
http://book.51cto.com/art/201007/213744.htm
7.6.1 反向地理编码
反向地理编码可以返回物理位置的街道地址,其中物理位置由经纬度值对指定。它为由基于位置的服务所返回的位置提供了一个可识别的上下文。
要执行反向查找,需要向Geocoder的getFromLocation方法传入目标经度和纬度。它会返回一个可能匹配的地址的列表。如果对于指定的坐标,Geocoder不能解析出任何地址,那么它将会返回null。
下面的例子展示了如何对最后知道的位置进行反向地理编码:
- location=locationManager.getLastKnownLocation
(LocationManager.GPS_PROVIDER);
-
-
double latitude = location.getLatitude();
-
double longitude = location.getLongitude();
-
-
Geocoder gc = new Geocoder(this, Locale.getDefault());
-
-
List<Address> addresses = null;
- try {
-
addresses = gc.getFromLocation(latitude, longitude, 10);
- } catch (IOException e) {}
反向查找的精度和粒度完全是由地理编码数据库中的数据质量决定的,因此,结果的质量在不同的国家和地区之间差别可能会很大。
http://book.51cto.com/art/201007/213746.htm
7.6.2 前向地理编码
前向地理编码(或者可以简单地称它为地理编码)可以确定一个给定位置的地图坐标。
提示:
一个有效的位置的组成,会根据搜索的区域(地理区域)的不同而不同。一般来说,它将包括各种正规的、不同粒度的街道地址(从国家到街道名和号码)、邮编、火车站、界标和医院。通常的习惯是,有效的搜索对象与可以输入到Google地图搜索栏中的地址和位置是很相似的。
通过在一个Geocoder实例上调用getFromLocationName,就可以执行前向地理编码查找。在这个过程中需要传递给它想要的坐标的位置以及要返回的结果数量的最大值,如下面的代码所示:
- List<Address>result=geocoder.getFromLocationName
(aStreetAddress,maxResults);
返回的地址列表中可能包含多个可能的匹配。其中每一个地址结果都将包含经度和纬度以及对那些坐标有用的所有额外的信息。这对于保证所解析的地址的正确性是很有用的,而且还能够在查找界标的时候提供地址的细节。
提示:
和反向编码一样,如果没有找到任何匹配的内容,那么它将会返回null。编码结果的可用性、精度和粒度都完全依赖于你正在查找的区域中可用的数据库。
在进行前向查找的过程中,创建Geocoder对象时所指定的区域设置尤其重要。区域设置提供了解释搜索请求的地理上下文,因为多个区域可能会存在相同的位置名称。在可能的地方,应该考虑选择一个地区的区域设置以避免地址名称歧义。
同时,应该使用尽可能多的地址细节。例如,下面的代码段说明了一个对New York街道地址所进行的前向地理编码:
- Geocoder fwdGeocoder = new Geocoder(this, Locale.US);
-
String streetAddress = "160 Riverside Drive, New York, New York";
-
-
List<Address> locations = null;
- try {
-
locations = fwdGeocoder.getFromLocationName(streetAddress, 10);
- } catch (IOException e) {}
为了得到更加详尽的结果,可以使用getFromLocationName方法的重载,它会把搜索限制在一个地理边界范围内,如下面的代码所示:
- List<Address> locations = null;
- try {
-
locations = fwdGeocoder.getFromLocationName(streetAddress, 10,
- n, e, s, w);
- } catch (IOException e) {}
在与MapView一起使用的时候,这种重载就特别有用,因为它可以把搜索限制在可视的地图范围内。
分享到:
相关推荐
java用geocoder相关jar文件,编译时需要导入这些jar包
PlacePicker是一个Place Picker替代库,可让您在地图中选择一个点并使用Geocoder而不是Google API来获取其坐标和地址 将PlacePicker添加到您的项目 在应用程序的build.gradle中包括以下依赖项: dependencies { ...
前端项目-leaflet-geocoder-mapzen,使用mapzen搜索或自己托管的pelias geocoder api搜索(geocode)的传单插件。
导入package:geocoder/geocoder.dart ,然后使用Geocoder.local来访问设备系统提供的地理编码服务。 例子: import 'package:geocoder/geocoder.dart' ; // From a query final query = "1600 Amphiteatre Parkway...
ol-geocoder, OpenLayers的Geocoder Nominatim OpenLayers控制编码器 用于 的编码器扩展。 需要 OpenLayers或者更高。 演示你可以在这里看到演示或者在 jsFiddle,如果你愿意。 还有一个用于创建自定义提供程序插件...
难忘的地方使用MapActivity和ListView在您选择的地图上记录位置的Android应用程序。
$geocoder = new \Geocoder\ProviderAggregator(); $geocoder->registerProviders([ new \Geocoder\Provider\GoogleMaps( $adapter, $locale, $region, $useSsl ), new \Geocoder\Provider\...
7.6 使用Geocoder 7.6.1 反向地理编码 7.6.2 前向地理编码 7.6.3 对“Where Am I”示例进行地理编码 7.7 创建基于地图的活动 7.7.1 MapView和MapActivity简介 7.7.2 创建一个基于地图的活动 7.7.3 配置和使用...
Laravel开发-google-geocoder 用于Laravel4/5、Slim3等的简单谷歌地理编码API v3包装器
7.3.2 根据要求标准查找提供器 7.4 确定自己所在的位置 7.4.1 “Where Am I”示例 7.4.2 追踪移动 7.4.3 更新“WhereAmI”示例中的位置 7.5 使用邻近提醒 7.6 使用Geocoder 7.6.1 反向地理编码 7.6.2 前向地理编码 ...
将Excel 中的文字地址转换成经纬度坐标(BD-09)。调用的百度地图的Geocoder API,使用代码前需要自己先注册一下相应的AK。
Laravel开发-laravel-geocoder 一个Laravel 5包,让地理编码变得轻而易举。
Mapbox GL Geocoder 使用地址解析器控件。 对于没有图形用户界面JavaScript地理编码器,请参见 。 用法 如果您支持较旧的浏览器,则需要使用polyfill。 我们建议使用 。 与模块捆绑器一起使用 npm install --save ...
7.6 使用Geocoder 220 7.6.1 反向地理编码 221 7.6.2 前向地理编码 221 7.6.3 对“Where Am I”示例进行地理编码 222 7.7 创建基于地图的活动 223 7.7.1 MapView和MapActivity简介 224 7.7.2 创建一个基于...
楼主实战,根据自身需求加在对应位置即可————————————————强调!强调!强调!,里面代码功能只包含...当点击获取坐标功能按钮,实时获取经纬度传输到文本框,然后通过Geocoder工具进行逆向地理编码。
这里的Geocoder介面这是一个Python模块,将实现与Here Geocoder一起使用的两个基本功能: 通过X / Y坐标对获取正式地址通过地址字符串获取坐标对这里的Geocoder API密钥有效的Here Geocoder API密钥是操作...
Geocoder可以帮助你建立地理感知应用程序。它提供了一个抽象层,地理编码操作。该库分为两个部分:HttpAdapter和供应商,是真正的可扩展性
资源来自pypi官网。 资源全名:geocoder-1.33.0-py2.py3-none-any.whl