在将LocationClient的位置提供给地图之前,先获取该位置



我正在把LocationClientGoogle Maps V2结合起来,因为我想把它集成到我的应用程序和outdate the LocationListener, LocationSource combination中。

我正在开发的应用程序的一个requirement是从LocationListener提供的grab the Location,即通过LocationSource定位and pass it to Mapsmodify

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

我错过了什么还是事实?

LocationClient的工作原理与最初的Android Locationneneneba API类似,因为它采用LocationListener作为参数来侦听位置更新:http://developer.android.com/reference/com/google/android/gms/location/LocationClient.html

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

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

最新更新