Это мой последний вопрос о GPS
Получение 0.0 для широты и долготы при отображении текущего местоположения на карте
Теперь вот код, который я использую для получения текущего местоположения пользователя.
LocationManager mlocManager = (LocationManager) getSystemService(Context.LOCATION_SERVICE);
Criteria crta = new Criteria();
crta.setAccuracy(Criteria.ACCURACY_FINE);
crta.setAltitudeRequired(false);
crta.setBearingRequired(false);
crta.setCostAllowed(true);
crta.setPowerRequirement(Criteria.POWER_LOW);
String provider = mlocManager.getBestProvider(crta, true);
Location loc = null;
if (provider != null) {
loc = mlocManager.getLastKnownLocation(provider);
}
LocationListener mlocListener = new MyLocationListener();
mlocListener.onLocationChanged(loc);
mlocManager.requestLocationUpdates(LocationManager.GPS_PROVIDER,
2000, 10, mlocListener);
public class MyLocationListener implements LocationListener{
public MyLocationListener() {
}
@Override
public void onLocationChanged(Location loc) {
if (null != loc) {
String Text = "Your current location is: \n" + "Latitude = \n"
+ loc.getLatitude() + "\nLongitude = \n" + loc.getLongitude();
Toast.makeText(getApplicationContext(),Text,Toast.LENGTH_SHORT).show();
GeoPoint myGeoPoint = new GeoPoint((int)(loc.getLatitude()*1E6),(int)(loc.getLongitude()*1E6));
mpc.animateTo(myGeoPoint);
mpc.setZoom(10);
objMapView.invalidate();
}
}
@Override
public void onProviderDisabled(String provider){
Toast.makeText(getApplicationContext(), "gps disabled",Toast.LENGTH_SHORT).show();
}
@Override
public void onProviderEnabled(String provider) {
Toast.makeText(getApplicationContext(), "gps enabled",Toast.LENGTH_SHORT).show();
}
@Override
public void onStatusChanged(String provider, int status, Bundle extras) {
}
}
Теперь проблема, с которой я сталкиваюсь, заключается в том, что при включении GPS мне не отображается текущее местоположение. Объект loc, loc = mlocManager.getLastKnownLocation (поставщик); всегда возвращает ноль. Я получил значение для провайдера как GPS.
Но если я выключу свое соединение gps, тот же объект loc будет иметь соответствующую информацию, и он будет работать частично корректно. Это означает, что это дает мне ближайшее местоположение. Я имею в виду полное местоположение города, где я сижу.
Но если я подключен к gps-соединению, это не дает мне даже местоположение города, не включается, если цикл только внутри класса слушателя местоположения. Я не понимаю, что здесь происходит.
Кто-нибудь может подсказать, как это решить?
Обновление:
Это значение, которое я получаю для объекта loc, если мой gps выключен
* Тысячу двадцать-три * Местоположение [mProvider = сеть, время изменения = 1331718353322, mLatitude = 12,9053401, mLongitude = 74,8359128, mHasAltitude = ложь, mAltitude = 0,0, mHasSpeed = ложь, mSpeed = 0,0, mHasBearing = ложь, mBearing = 0,0, mHasAccuracy = верно, mAccuracy = 36,0, mExtras = Пачка [mParcelledData.dataSize = 148]].
Но если GPS включен, loca возвращает ноль