RED*_*ED_ 3 gps android location google-maps
我已经在我的应用上运行了Google Maps v2,使用服务获取用户位置.问题是位置不断变化.它显示了我的真实位置,然后跳转到我以前从未去过的随机位置.
我通过服务检查GPS /网络lat/lng并在我的地图类中调用它们,然后我在那里设置相机动画以移动到我的位置.我真的不知道什么是错的,或者从哪里开始.
有谁知道这是什么问题?这让我感到困惑.
我真的不知道要发布什么代码.通过网络的位置的准确性是1121m,其中通过GPS的位置的准确度是大约31.我正在使用a LocationListener
并且在onLocationChanged
说它正在使用我的网络位置,突然精度提高到29m,然后它突然变为回到1121米.这种情况大约每分钟左右发生一次.非常奇怪的行为.启用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;
Run Code Online (Sandbox Code Playgroud)
如果有人可以提供帮助,我会非常感激.先感谢您.
我认为这解决了自己.仅仅因为准确性而在地点之间跳跃.一旦GPS精度优于网络,它就开始通过GPS进行更新.
一旦准确度小于30,我也会停止位置更新,onLocationChanged
因此我有更多的控制权并且不会浪费用户电池.
归档时间: |
|
查看次数: |
6520 次 |
最近记录: |