提到Android基于位置的服务,就不得不提android.location包,location包提供了很便捷的API来实现基于位置的服务。主要包括Geocoder和LocationManager。今天就先来介绍一下Geocoder。
Geocoder可以在街道地址和经纬度地图坐标之间进行转换。它提供了对两种地理编码功能的访问:
Forward Geocoding(前向地理编码):查找某个地址的经纬度
Reverse Geocoding(反向地理编码):查找一个给定的经纬度所对应的街道地址。
分别对应以下方法:
List<Address> getFromLocationName(String locationName, int maxResults)
List<Address> getFromLocation(double latitude,double longitude,int maxResults);
我们新建一个location的项目。因为示例要使用到地图服务,所以创建时Build Target要选择Google APIs这一项。
然后修改/res/layout/main.xml,代码如下:
<?xml version="1.0" encoding="utf-8"?>
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="fill_parent">
<com.google.android.maps.MapView
android:id="@+id/mapView"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:clickable="true"
android:apiKey="your apiKey goes here"/>
<LinearLayout
android:layout_width="fill_parent"
android:layout_height="wrap_content">
<EditText
android:id="@+id/name"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_weight="1"/>
<Button
android:id="@+id/find"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Find"/>
</LinearLayout>
</FrameLayout>
然后我们来看一下MainAc