web-dev-qa-db-fra.com

Android GeoPoint avec valeurs lat / long

J'essaie d'obtenir un GeoPoint pour -23.4456 par 45.44334

Quelles valeurs dois-je transmettre au constructeur du GeoPoint car il ne prend que des Ints.

30
Ian Vink

Les coordonnées GeoPoint sont basées sur des micro-degrés (degrés * 1e6) - écrites ici

float lat = -23.4456f;
float lng = 45.44334f;
GeoPoint gp = new GeoPoint((int)(lat * 1E6), (int)(lng * 1E6));
73
Itsik

plutôt que de répéter les calculs dans toute mon application, je préfère créer un LatLonPoint:

private static final class LatLonPoint extends GeoPoint {
    public LatLonPoint(double latitude, double longitude) {
        super((int) (latitude * 1E6), (int) (longitude * 1E6));
    }
}

puis partout où j'ai besoin de créer un GeoPoint et j'ai un lat/lon je fais juste

GeoPoint point = new LatLonPoint(37.234569, -122.123456);

il devrait vraiment y avoir un constructeur lat/long sur GeoPoint en premier lieu.

30
Ross M

J'ai pris le lat/long de cette page et l'ai écrit sans aucun point ... cela a très bien fonctionné, ma maison est là, où elle devrait être;)

donc au lieu de (ci-dessus) 34.234569 il suffit d'écrire 34234569 ... rappelez-vous: 1e6 est 1000000, rien d'autre;)

6
ben0bi

Je trouve que la solution pourrait vous aider.

1) D'abord, vous avez des données (Lieu) sous forme de diplôme. 2) Par l'équation, vous devez le multiplier par 1000000 3) maintenant, vous avez un emplacement GEO POINT particulier.

Comme ici, si j'ai un emplacement comme: Latitude: 23.0395677 et Longitude: 72.5660045 ° Donc, votre GeoPoint (23039568,72566045);

2
NovusMobile