Android等待GoogleMap.OnMyLocationChangeListener

时间:2015-05-15 17:55:14

标签: android google-maps android-asynctask

我使用GoogleMap.OnMyLocationChangeListener获取当前位置(下方)

private GoogleMap.OnMyLocationChangeListener myLocationChangeListener = new GoogleMap.OnMyLocationChangeListener() {
    @Override
    public void onMyLocationChange(Location location) {
        start = new LatLng(location.getLatitude(), location.getLongitude());
        map.addMarker(new MarkerOptions().position(start));
    }
};

但是,我需要一种等待侦听器完成的方法。原因是,如果我继续执行没有位置数据的其他代码,Start var显然将为null。我认为AsyncTask在这里可能很有用,但不知道在doInBackground / onPostExecute中调用什么。

map.setOnMyLocationChangeListener(myLocationChangeListener); // set the listener
// perform wait and initiate start variable
String url = getDirectionsUrl(start, destination);
// a sync task here using the url

任何提示或代码片段都会非常感激〜!

1 个答案:

答案 0 :(得分:2)

  

设置监听器后我需要位置信息

这是不可能的。设置监听器后,可能 任何“位置信息”。获取位置可能需要一些时间。根据您现有的代码,您首次获得位置数据的机会将在onMyLocationChange(),并且您无法在此之前使用位置数据。

另请注意,setOnMyLocationChangeListener()已弃用大约一年。引用the documentation

  

不推荐使用此方法。   请改用FusedLocationProviderApi。 FusedLocationProviderApi提供改进的定位和功率使用,并由“我的位置”蓝点使用。有关示例代码示例或位置开发人员指南,请参阅示例应用程序文件夹中的MyLocationDemoActivity。