0

我正在搞乱与 的LocationClient组合Google Maps V2,因为我想将它集成到我的应用程序和outdate the LocationListener, LocationSource combination.

requirement我正在开发的应用程序之一是通过 LocationSourcegrab the Location从 LocationListener 提供该modify位置and pass it to Maps

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

我错过了什么还是这是事实?

4

1 回答 1

2

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

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

LocationSource因此,您可以使用相同的策略通过和将位置更新传递给 Maps API v2LocationSource.OnLocationChangedListener来控制在地图上显示哪些位置。

首先,OnLocationChangedListener在你的声明一个对象Activity

private OnLocationChangedListener mListener; //Used to update the map with new location

然后,为您的活动实施 LocationSource,例如:

public class MapScreen extends FragmentActivity implements LocationSource{

onCreate()中,在设置 Map 对象时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实现LocationSource

//Update real-time location on map
if(mListener != null){
    mListener.onLocationChanged(location);
}
于 2013-07-20T01:11:45.517 回答