高德地图目前仅支持中国范围内的的地理编码和反地理编码,当我们在做搜索功能的时候,由于用户不可以记住地点的经纬度,所以只可能输入地名,所以地理编码就显得额外重要,这里我们查看一下AMap api中的地理编码。
》地理编码:
地理编码,顾名思义就是根据地理名称来获得地点的经纬度。
方法是通过调用Geocoder.getFromLocationName(String,int)来一个address类,然后再使用address来获得经纬度。
Demo中的实例:
public void getLatlon(final String name) {
Thread t = new Thread(new Runnable() {
public void run() {
try {
List<Address> address = coder.getFromLocationName(name, 3);
if (address !=null && address.size() > 0) {
Address addres = address.get(0);
addressName = addres.getLatitude() +","
+ addres.getLongitude();
handler.sendMessage(Message.obtain(handler,
Constants.REOCODER_RESULT));
}
} catch (AMapException e) {
handler.sendMessage(Message
.obtain(handler, Constants.ERROR));
}
}
});
// 逆地理编码
publicvoid getAddress(finaldouble mlat, finaldouble mLon) {
Thread t = new Thread(new Runnable() {
public void run() {
try {
List<List<Address>> lists = coder.getFromLocation(mlat,
mLon, 3, 3, 3, 500);
List<Address> address = lists.get(0);// 0代表poi搜索结果,1代表rode搜索结果,2代表cross搜索结果
if (address !=null && address.size() > 0) {
Address addres = address.get(0);
addressName = addres.getAdminArea()
+ addres.getSubLocality()
+ addres.getFeatureName() + "附近";
handler.sendMessage(Message.obtain(handler,
Constants.REOCODER_RESULT));
}
} catch (AMapException e) {
handler.sendMessage(Message
.obtain(handler, Constants.ERROR));
}
}
});
}