Это мой последний вопрос о GPSТекущее местоположение пользователя не загружается
Getting 0.0 for latitude and longitude while showing current location in map
Теперь вот код, я использую, чтобы получить текущее местоположение пользователя.
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 (поставщик); всегда возвращает null. Я получил значение для провайдера как gps.
Но если я включу свое соединение gps, то тот же объект loc будет иметь соответствующую информацию, и он будет работать частично. Это значит, что это дает мне ближайшее место. Я имею в виду полное местоположение города, где я сижу.
Но если я нахожусь в моем gps-соединении, это не дает мне даже местоположение города, не входит ли в цикл только внутри класса слушателя. Я не понимаю, что здесь не так.
Любой может сказать мне, как его решить?
Update:
Это значение я для объекта цит если мой 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 включен, локусы возвратного нуля
спасибо. Пожалуйста, дайте мне время, чтобы проверить этот код. Я вернусь – tejas
Супер, большое спасибо Лалиту. Он работает идеально. Не могли бы вы рассказать мне, как отметить точное местоположение пользователя сейчас.Я могу переехать в город, где он стоит. Я хочу отметить раунд, как тот, который мы получаем в приложении карты. Не могли бы вы сказать мне, как это сделать? – tejas
Чтобы нарисовать маркер, просто включите myLocation. Вот код \t mMyLocationOverlay = new MyLocationOverlay (VenueDescription.this, objMapView); \t \t \t \t \t mMyLocationOverlay.enableMyLocation(); \t \t \t \t \t objMapView.getOverlays(). Add (mMyLocationOverlay); и установите масштаб на некоторое большее число, например, 30+ – tejas