提到Android基于位置的服务,就不得不提android.location包,location包提供了很便捷的API来实现基于位置的服务。主要包括Geocoder和LocationManager。今天就先来介绍一下Geocoder。
Geocoder可以在街道地址和经纬度地图坐标之间进行转换。它提供了对两种地理编码功能的访问:
Forward Geocoding(前向地理编码):查找某个地址的经纬度
Reverse Geocoding(反向地理编码):查找一个给定的经纬度所对应的街道地址。
分别对应以下方法:
1 2 |
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,代码如下:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 |
<?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> |
然后我们来看一下MainActivity.java文件,代码如下:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 |
package com.scott.location; import java.io.IOException; import java.util.List; import android.location.Address; import android.location.Geocoder; import android.os.Bundle; import android.view.View; import android.widget.Button; import android.widget.EditText; import android.widget.ImageView; tText; import android.widget.ImageView; >
Forward Geocoding(前向地理编码):查找某个地址的经纬度 Reverse Geocoding(反向地理编码):查找一个给定的经纬度所对应的街道地址。 分别对应以下方法:
我们新建一个location的项目。因为示例要使用到地图服务,所以创建时Build Target要选择Google APIs这一项。 然后修改/res/layout/main.xml,代码如下:
然后我们来看一下MainActivity.java文件,代码如下:
|