Android LocationManager получает целочисленное значение координаты (тогда как double) - PullRequest
0 голосов
/ 07 июля 2011

У меня проблема с использованием Location Api. Я пытаюсь получить Местоположение от любого доступного провайдера, используя этот код:

//Définir ma localisation
final LocationManager manag = (LocationManager) ActivityRechercheConcession.this.getSystemService(Context.LOCATION_SERVICE);
//Choix du service de localisation en fonction de critères
Criteria crit = new Criteria();
crit.setCostAllowed(false);
crit.setAccuracy(1000); //précis à au moins 1km pret
final String choix_source = manag.getBestProvider(crit, true);
//demander la position courante
manag.requestLocationUpdates(choix_source, 10000, 0, new LocationListener(){
    //Lors de la capture de la position
    public void onLocationChanged(Location location) {
    Log.i("LocationListener","New position from "+choix_source+": ("+location.getLatitude()+","+location.getLongitude()+")");
    }
}

Но когда я отправляю координаты с помощью Emulator Control (например, long: 7.745304, lat: 48.589326) Я получаю только целую часть в данных о своем местоположении (например, long 7.0, lat 48.0) Таким образом, метод расчета по этим значениям полностью ложен.

Почему я теряю дробную часть этих данных?

Ответы [ 2 ]

1 голос
/ 07 июля 2011

Метод Criteria.setAccuracy принимает только два флага: ACCURACY_FINE и ACCURACY_COARSE, а не абсолютное числовое значение, которое вы использовали.Я предполагаю, что 1000 интерпретируется здесь как грубая точность, и поэтому вы получаете обрезанные координаты.

Другими словами, вы должны использовать:

crit.setAccuracy(Criteria.ACCURACY_FINE);

для получения точных координат.

0 голосов
/ 12 июля 2011

Проблема возникла из-за управления эмулятором Eclipse, а не из кода.

Некоторые, чтобы решить эту проблему, я должен правильно настроить eclipse.ini, добавив следующую строку:

-Duser.language=en

соответствует моей локали, поэтому я использовал:

-Duser.language=fr

и после этого мне пришлось использовать «кома» вместо «точки» в значении, которое я отправил. Таким образом, код работает хорошо: D

...