地理编码您的位置找到android eclipse
我的代码当前在地图上显示用户位置。。。使用下面的代码地理编码您的位置找到android eclipse,android,eclipse,gps,geocoding,Android,Eclipse,Gps,Geocoding,我的代码当前在地图上显示用户位置。。。使用下面的代码 private void initMyLocation() { final MyLocationOverlay overlay = new MyLocationOverlay(this, map); overlay.enableMyLocation(); overlay.runOnFirstFix(new Runnable() { public void run() { con
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消息。。我是否必须删除上面的代码并通过单独的经度和纬度值检索位置?最好我不想去更改上面的代码,因为它已经工作了。。我似乎找不到任何好的教程。。有人能告诉我怎么走吗?
谢谢
因为MyLocationOverlay已经实现了LocationListener,所以您可以简单地将其子类化并覆盖onLocationChanged listener方法,并在那里执行地理编码,最好是在新的线程/异步任务中执行,以避免阻塞覆盖处理
比如:
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并注册location的更新,并执行与上面代码中几乎相同的操作。在我看来,这可能是多余的,而且不必要的昂贵,因为如上所述,您已经有一个LocationListener实现要挂接,那么为什么还要编写另一个呢
@不,很好,很好,谢谢..它出现了一个错误MyAsyncTask无法解析为类型“。。那么,我是否要创建一个新类来执行地理编码-“MyAsyncTask”类??我找到的任何地理编码教程都使用了经度和纬度。。那么我可以传递我的位置变量进行地理编码吗?抱歉,我对android非常陌生。@IrishGal是的,如果您看到代码段中的注释,我建议您应该“为AsyncTask创建子类”。因此,您应该创建一个新类,扩展您应该在其中编写地理编码代码的地方。使用AsyncTask或任何其他技术生成新线程的原因是,地理编码很可能是一项涉及网络I/O的昂贵操作,这将阻止MyLocationOverlay的操作,因为我们从该类中启动它。此外,该对象具有getLatitude和Get经度方法,这些方法将为您提供该对象封装的纬度和经度值。