我的代码目前在地图上显示用户位置...使用下面的代码
private void initMyLocation() {
final MyLocationOverlay overlay = new MyLocationOverlay(this, map);
overlay.enableMyLocation();
overlay.runOnFirstFix(new Runnable() {
public void run() {
controller.setZoom(8);
controller.animateTo(overlay.getMyLocation());
}
});
map.getOverlays().add(overlay);
}
我想使用用户的当前位置并对其进行地理定位以将地址显示为Toast消息..我是否必须删除上面的代码并通过单独的经度和纬度值检索位置?最好我不想改变上面的代码,因为它已经有效..我似乎无法找到任何好的教程..有人可以指导我一个? 感谢
答案 0 :(得分:0)
由于MyLocationOverlay
已经实现了LocationListener
,您可以简单地对其进行子类化并覆盖onLocationChanged
侦听器方法并在那里执行地理编码(最好在新的线程/异步任务中执行避免阻止叠加处理!)。
类似的东西:
private void initMyLocation() {
final MyLocationOverlay overlay = new MyLocationOverlay(this, map){
public void onLocationChanged(android.location.Location location)
{
//subclass AsyncTask to take a location parameter for
//doInBackground where it geocodes and then passes a String
//to onPostExecute where you can display a toast
new MyAsyncTask().execute(location);
//remember to call the parent implementation to avoid breaking
//MyLocationOverlay default functionality
super.onLocationChanged(location);
}
};
overlay.enableMyLocation();
overlay.runOnFirstFix(new Runnable() {
public void run() {
controller.setZoom(8);
controller.animateTo(overlay.getMyLocation());
}
});
map.getOverlays().add(overlay);
}
另一个选项可能是编写自定义LocationListener
并注册位置更新,并执行与上面代码完全相同的操作。 IMO,这可能是多余的,而且不必要的昂贵,因为如上所述,你已经有LocationListener
实现,所以为什么要写另一个呢?