我正在把LocationClient
和Google Maps V2
结合起来,因为我想把它集成到我的应用程序和outdate the LocationListener, LocationSource combination
中。
我正在开发的应用程序的一个requirement
是从LocationListener提供的grab the Location
,即通过LocationSource定位and pass it to Maps
的modify
。
这是有效的,但我不知道如何使用LocationClient来管理它。因为它似乎会自动向地图提供位置,在我可以修改它之前,没有必要获取位置。
我错过了什么还是事实?
LocationClient
的工作原理与最初的Android Locationneneneba API类似,因为它采用LocationListener作为参数来侦听位置更新:http://developer.android.com/reference/com/google/android/gms/location/LocationClient.html
LocationListener.onLocationChanged(Location location)
方法然后被具有新位置的平台调用。
因此,您可以使用相同的策略,通过LocationSource
和LocationSource.OnLocationChangedListener
将位置更新传递给Maps API v2,以控制地图上显示的位置。
首先,在Activity
:中声明一个OnLocationChangedListener
对象
private OnLocationChangedListener mListener; //Used to update the map with new location
然后,为您的活动实现LocationSource,类似于:
public class MapScreen extends FragmentActivity implements LocationSource{
在onCreate()
中,当您设置Map对象时,请为此Activity
设置LocationSource
:
...
//Show the location on the map
mMap.setMyLocationEnabled(true);
//Set location source
mMap.setLocationSource(this);
...
然后,添加LocationSource
接口所需的方法:
/**
* Maps V2 Location updates
*/
@Override
public void activate(OnLocationChangedListener listener) {
mListener = listener;
}
/**
* Maps V2 Location updates
*/
@Override
public void deactivate() {
mListener = null;
}
最后一部分是将位置更新从正常的LocationListener
传递到实现LocationSource
:的Activity
//Update real-time location on map
if(mListener != null){
mListener.onLocationChanged(location);
}