我正在将LocationClient
与Google Maps V2
结合使用,因为我想将它集成到我的应用中outdate the LocationListener, LocationSource combination
。
我正在处理的应用的一个requirement
是来自LocationListener的grab the Location
,modify
位置and pass it to Maps
通过LocationSource提供。
这是有效的,但我不知道如何使用LocationClient来管理它。因为它似乎自动提供位置到地图,没有必要抓住位置之前我可以修改它。
我是否会遗漏某些事情或者这是事实?
答案 0 :(得分:2)
LocationClient
与原始Android Location API的工作方式类似,它将LocationListener作为参数来侦听位置更新:
http://developer.android.com/reference/com/google/android/gms/location/LocationClient.html
LocationListener.onLocationChanged(Location location)
方法。
因此,您可以使用相同的策略通过LocationSource
和LocationSource.OnLocationChangedListener
将位置更新传递到Maps API v2,以控制地图上显示的位置。
首先,在OnLocationChangedListener
中声明Activity
对象:
private OnLocationChangedListener mListener; //Used to update the map with new location
然后,为您的活动实施LocationSource,例如:
public class MapScreen extends FragmentActivity implements LocationSource{
在onCreate()
中,在设置地图对象时为此LocationSource
设置Activity
:
...
//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
传递到实施Activity
的{{1}}:
LocationSource