对您的位置进行地理编码,发现了android eclipse

时间:2011-04-11 01:39:22

标签: android eclipse gps geocoding

我的代码目前在地图上显示用户位置...使用下面的代码

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消息..我是否必须删除上面的代码并通过单独的经度和纬度值检索位置?最好我不想改变上面的代码,因为它已经有效..我似乎无法找到任何好的教程..有人可以指导我一个? 感谢

1 个答案:

答案 0 :(得分:0)

  1. 由于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);
    }
    
  2. 另一个选项可能是编写自定义LocationListener并注册位置更新,并执行与上面代码完全相同的操作。 IMO,这可能是多余的,而且不必要的昂贵,因为如上所述,你已经有LocationListener实现,所以为什么要写另一个呢?