我正在编写一个应用程序,在谷歌地图中显示您的位置... 到目前为止,这么好......它确实显示了我的位置
问题是,如果我正在移动(或确实如此,但仅在一段时间后),这个gps不会更新
有没有人知道如何以原生谷歌地图(对于Android)的方式做到这一点? 也就是说,如果您点击“我的位置”,它会显示一个闪烁的蓝点,当您移动时会发生变化......
这是我的代码:
//Initializing the listeners
locationManager.requestLocationUpdates(LocationManager.NETWORK_PROVIDER, 35000, 10, networkLocationListener);
locationManager.requestLocationUpdates(LocationManager.GPS_PROVIDER, 35000, 10, gpsLocationListener);
//and now, in both 'networkLocationListener' and 'gpsLocationListener'
//I overwrite the method 'onLocationChanged':
@Override
public void onLocationChanged(Location location) {
Log.i("test", "New network location: "+location.getLatitude()+
" , "+location.getLongitude());
myLongitude= location.getLongitude();
myLatitude= location.getLatitude();
}
//and the variables myLongitude and myLatitude are the only ones that I need to display my
//position in the map...
有人知道我错过了什么吗?
答案 0 :(得分:5)
您正在使用的方法调用是requestLocationUpdates(String provider, long minTime, float minDistance, LocationListener listener)
,并且您告诉它仅每35000毫秒或每35秒为您提供一次更新。尝试将该数字降低到适合您的数量。数字越小意味着电池使用量越多。
如果您需要MapView
上的指标,请查看MyLocationOverlay
。
答案 1 :(得分:1)
你不想永远这样离开它,但是如果你还没有给出一个镜头,那么将minTime和minDistance值设置为零可能是值得的。
locationManager.requestLocationUpdates(LocationManager.GPS_PROVIDER, 0, 0, gpsLocationListener);
如果minTime大于0,则LocationManager可能会在位置更新之间休息几分钟,以节省电量。如果minDistance大于0,则仅当设备移动minDistance米时才会广播位置。要尽可能频繁地获取通知,请将两个参数都设置为0。