我使用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
任何提示或代码片段都会非常感激〜!
答案 0 :(得分:2)
设置监听器后我需要位置信息
这是不可能的。设置监听器后,可能 任何“位置信息”。获取位置可能需要一些时间。根据您现有的代码,您首次获得位置数据的机会将在onMyLocationChange()
,并且您无法在此之前使用位置数据。
另请注意,setOnMyLocationChangeListener()
已弃用大约一年。引用the documentation:
不推荐使用此方法。 请改用FusedLocationProviderApi。 FusedLocationProviderApi提供改进的定位和功率使用,并由“我的位置”蓝点使用。有关示例代码示例或位置开发人员指南,请参阅示例应用程序文件夹中的MyLocationDemoActivity。