在将LocationClient提供给地图之前抓住它的位置?

时间:2013-07-17 14:52:02

标签: android google-maps-api-2 location-client

我正在将LocationClientGoogle Maps V2结合使用,因为我想将它集成到我的应用中outdate the LocationListener, LocationSource combination

我正在处理的应用的一个requirement是来自LocationListener的grab the Locationmodify位置and pass it to Maps通过LocationSource提供。

这是有效的,但我不知道如何使用LocationClient来管理它。因为它似乎自动提供位置到地图,没有必要抓住位置之前我可以修改它。

我是否会遗漏某些事情或者这是事实?

1 个答案:

答案 0 :(得分:2)

LocationClient与原始Android Location API的工作方式类似,它将LocationListener作为参数来侦听位置更新: http://developer.android.com/reference/com/google/android/gms/location/LocationClient.html

然后,具有新位置的平台会调用LocationListener.onLocationChanged(Location location)方法。

因此,您可以使用相同的策略通过LocationSourceLocationSource.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