mwe*_*b84 2 gps android location google-maps
我有一个关于使用内置"我的位置"按钮的问题.在我的设置中,我有
mMap.setMyLocationEnabled(true);
因此,按钮在地图上呈现,当GPS打开时,它就像一个魅力.当GPS关闭时,它不再起作用."我的位置"按钮的标准行为是否仅在启用GPS时才起作用?
我想在地图上显示粗略的位置,甚至禁用GPS.我是否必须使用LocationManager来完成此操作?
谢谢
使用Android Maps API V2,您可以使用LocationSource和LocationSource.OnLocationChangedListener传递您自己的位置更新并控制地图上显示的位置.
例如,您可以通过法线收听GPS_PROVIDER或NETWORK_PROVIDER定位更新LocationListener,并将这些位置传递给LocationSource.OnLocationChangedListener.无论你传入什么,都会在地图上显示出来.
首先,OnLocationChangedListener在你的Activity:中声明一个对象:
private OnLocationChangedListener mListener; //Used to update the map with new location
Run Code Online (Sandbox Code Playgroud)
然后,为您的活动实现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);
...
Run Code Online (Sandbox Code Playgroud)
然后,添加LocationSource接口所需的方法:
/**
* Maps V2 Location updates
*/
@Override
public void activate(OnLocationChangedListener listener) {
mListener = listener;
}
/**
* Maps V2 Location updates
*/
@Override
public void deactivate() {
mListener = null;
}
Run Code Online (Sandbox Code Playgroud)
最后一部分是将位置更新从正常LocationListener传递到Activity实现LocationSource:
//Update real-time location on map
if (mListener != null) {
mListener.onLocationChanged(location);
}
Run Code Online (Sandbox Code Playgroud)
如果您正在GPS_PROVIDER通过此提供商收听并将该位置传递到该mListener.onLocationChanged()方法,并关闭GPS,如果您不对其采取任何进一步操作LocationSource,则最新的GPS位置将保留在屏幕上.此时,您可以收听NETWORK_PROVIDER并将这些位置更新传递给mListener.onLocationChanged()方法.
| 归档时间: |
|
| 查看次数: |
4213 次 |
| 最近记录: |