借助 Android Maps API V2,您可以使用 LocationSource 和 LocationSource.OnLocationChangedListener 传递您自己的位置更新并控制地图上显示的位置。
例如,您可以通过普通的LocationListener 收听GPS_PROVIDER 或NETWORK_PROVIDER 位置更新,并将这些位置传递给LocationSource.OnLocationChangedListener。无论您输入什么,都会在地图上显示。
首先,在您的Activity 中声明一个OnLocationChangedListener 对象:
private OnLocationChangedListener mListener; //Used to update the map with new location
然后,为您的活动实施 LocationSource,例如:
public class MapScreen extends FragmentActivity implements LocationSource {
在onCreate() 中,当您设置地图对象时,为此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);
}
如果您正在收听GPS_PROVIDER 并将此提供程序的位置传递给mListener.onLocationChanged() 方法,并且您关闭了GPS,如果您没有对LocationSource 采取任何进一步的操作,最新的GPS 位置将保留在屏幕上。此时您可以收听NETWORK_PROVIDER 并将这些位置更新传递给mListener.onLocationChanged() 方法。