[英]Using a loop with Google Maps Location data
我正在使用google maps android获取当前位置:
LatLng currentLocation = new LatLng(location.getLatitude(), location.getLongitude());
我将如何构造一个简单的循环,使其仅产生每第4个currentLocation的发言,而不是通过locationManager反馈每个点?
我认为您不应该使用循环来忽略位置更新,而应该仅以希望接收位置的频率请求位置更新,否则设备将利用所有力量来获取位置,而只是忽略它。
您应该使用LocationClient而不是LocationManager有关如何使用LocationClient的信息,请参见以下链接: http: //developer.android.com/training/location/retrieve-current.html http://developer.android.com/reference/com /google/android/gms/location/LocationClient.html#requestLocationUpdates(com.google.android.gms.location.LocationRequest,android.app.PendingIntent )
vs LocationManager http://developer.android.com/reference/android/location/LocationManager.html#requestLocationUpdates(long,float,android.location.Criteria,android.app.PendingIntent )
但两者都提供了通过特定频率请求位置更新的方法
requestLocationUpdates()
这应该可以在某种程度上优化电池寿命,并且可以使用API。
假设您使用LocationManager#requestLocationUpdates(String provider, long minTime, float minDistance, LocationListener listener)
获取当前位置,如果将minTime
增加四倍,则将有效地接收到第四个位置更新。
这将允许您处理从位置提供者收到的每个位置,但仅每n秒更新一次地图。
您想跟踪上一次更新地图的时间,并且仅在经过n秒后才更新。
声明:
long lastTime = -1; // no location update yet
final long delta = 15 * 1000; // fifteen seconds apart
在您的onLocationChanged
:
// common code here, do this for every location received ...
Log.d(TAG, location + "");
// this gets executed only after fifteen seconds
if (location.getTime() > lastTime + delta) {
// update map here
lastTime = location.getTime();
}
请注意,这不能确保您每隔15秒就获得一次地图更新。 十五秒过后,您将获得第一次更新。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.