Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/google-maps/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android maps v2:MyLocation按钮仅适用于GPS_Android_Google Maps_Gps_Location - Fatal编程技术网

Android maps v2:MyLocation按钮仅适用于GPS

Android maps v2:MyLocation按钮仅适用于GPS,android,google-maps,gps,location,Android,Google Maps,Gps,Location,我有一个关于使用内置“我的位置”按钮的问题。在我的设置中,我有 mMap.setMyLocationEnabled(true) 因此,按钮在地图上呈现,当GPS打开时,它就像一个符咒。当GPS关闭时,它不再工作。“我的位置”按钮是否只有在启用GPS时才起作用 我想在地图上显示大致位置,即使GPS被禁用。我是否必须使用LocationManager来完成此任务 感谢您当您没有gps或gps不可用时,您需要缓存上一个已知位置并显示它。使用Android Maps API V2,您可以使用和来传递您自

我有一个关于使用内置“我的位置”按钮的问题。在我的设置中,我有

mMap.setMyLocationEnabled(true)

因此,按钮在地图上呈现,当GPS打开时,它就像一个符咒。当GPS关闭时,它不再工作。“我的位置”按钮是否只有在启用GPS时才起作用

我想在地图上显示大致位置,即使GPS被禁用。我是否必须使用LocationManager来完成此任务


感谢您

当您没有gps或gps不可用时,您需要缓存上一个已知位置并显示它。

使用Android Maps API V2,您可以使用和来传递您自己的位置更新,并控制地图上显示的位置

例如,您可以通过普通网络收听
GPS\u提供程序
NETWORK\u提供程序
位置更新,并将这些位置传递给
LocationSource.OnLocationChangedListener
。无论你通过什么,都会在地图上显示出来

首先,在
活动中声明
OnLocationChangedListener
对象:

private OnLocationChangedListener mListener; //Used to update the map with new location
然后,为您的活动实施LocationSource,例如:

公共类映射屏幕扩展碎片活动实现位置源{

onCreate()
中,设置地图对象时,为该
活动设置
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
活动

//Update real-time location on map
if (mListener != null) {
    mListener.onLocationChanged(location);
}

如果您正在收听
GPS\U提供程序
并将位置从此提供程序传递到
mListener.onLocationChanged()中
方法,然后关闭GPS,如果您不使用
LocationSource
采取任何进一步的操作,最新的GPS位置将保留在屏幕上。此时,您可以收听
网络\u提供程序
并将这些位置更新传递给
mListener.onLocationChanged()
方法。

看起来您必须请求位置更新。即使您没有在代码中使用传入位置,也会出现蓝点。

如果GPS关闭,它将如何获得位置?通过使用“网络”模式。位置将不如GPS估计的位置精确