我已经在我的应用程序上运行Google Maps v2,使用一项服务来获取用户位置。问题在于位置不断变化。它会稍微显示我的真实位置,然后跳转到一个我从未去过的随机位置。
我正在通过服务检查GPS /网络纬度/经度,并在我的地图课程中对其进行调用,然后在其中为相机设置动画以移动到我的位置。我真的不知道怎么了,或者从哪里开始。
有人知道这是什么问题吗?这让我感到困惑。
我真的不知道要发布什么代码。通过网络进行定位的精度为1121m,其中通过GPS进行定位的精度约为31。我使用,LocationListener
并且在onLocationChanged
is中表示使用的是我的网络位置,精度突然提高到29m,然后突然下降后退至1121m。这大约每分钟发生一次。非常奇怪的行为。启用GPS后,那不是首选吗?一旦得到修复,是否可以将其设置为我的首选?
我的服务得到这样的信息:
public Location getLocation() {
Log.i("getLocation", "Get location called");
try {
locationManager = (LocationManager) mContext.getSystemService(LOCATION_SERVICE);
//Getting GPS status
isGPSEnabled = locationManager.isProviderEnabled(LocationManager.GPS_PROVIDER);
//Getting network status
isNetworkEnabled = locationManager.isProviderEnabled(LocationManager.NETWORK_PROVIDER);
if (!isGPSEnabled && !isNetworkEnabled) {
// no network provider is enabled and GPS is off.
Log.d("NOT ENABLED", "PASSIVE PROVIDER");
locationManager.requestLocationUpdates(LocationManager.PASSIVE_PROVIDER, MIN_TIME_BW_UPDATES, MIN_DISTANCE_CHANGE_FOR_UPDATES, this);
loc = locationManager.getLastKnownLocation(LocationManager.PASSIVE_PROVIDER);
if (loc != null) {
latitude = loc.getLatitude();
longitude = loc.getLongitude();
Log.i("PASSIVE_LOCATION", "Location: "+loc.toString());
}
}
else {
this.canGetLocation = true;
if (isNetworkEnabled) {
Log.d("Network", "Network");
locationManager.requestLocationUpdates(LocationManager.NETWORK_PROVIDER, MIN_TIME_BW_UPDATES, MIN_DISTANCE_CHANGE_FOR_UPDATES, this);
loc = locationManager.getLastKnownLocation(LocationManager.NETWORK_PROVIDER);
if (loc != null) {
latitude = loc.getLatitude();
longitude = loc.getLongitude();
Log.i("NETWORK_LOCATION", "Location: "+loc.toString());
}
}
if (isGPSEnabled) {
locationManager.requestLocationUpdates(LocationManager.GPS_PROVIDER, MIN_TIME_BW_UPDATES, MIN_DISTANCE_CHANGE_FOR_UPDATES, this);
Log.d("GPS Enabled", "GPS Enabled");
loc = locationManager.getLastKnownLocation(LocationManager.GPS_PROVIDER);
if (loc != null) {
latitude = loc.getLatitude();
longitude = loc.getLongitude();
Log.i("GPS_LOCATION", "Location: "+loc.toString());
}
}
}
}
catch (Exception e) {
e.printStackTrace();
}
//check provider & accuracy
Log.d("PROVIDER", loc.getProvider());
Log.d("ACCURACY", Float.toString(loc.getAccuracy()));
return loc;
如果有人可以提供帮助,我将非常感激。先感谢您。
我认为这解决了自己。只是因为准确性,它在位置之间跳跃。一旦GPS精度优于网络,它便开始通过GPS更新。
一旦精度低于30英寸onLocationChanged
,我也将停止位置更新,因此我有更多控制权,并且不会浪费用户的电池。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句