2010-08-26 7 views
29

Je suis en train d'obtenir un GeoPoint pour -23,4456 par 45,44334Android GeoPoint avec des valeurs lat/long

Quelles sont les valeurs que je passe dans le constructeur de la GeoPoint comme prendre Ints seulement.

+0

duplicata possible de [comment donner une double valeur à Geopoint dans GoogleMap overlays?] (Http://stackoverflow.com/questions/2227816/how-to-give-double-value-to-geopoint-in-googlemap- overlays) – nawfal

Répondre

72

coordonnées GeoPoint sont basées dans microdegrees (degrés * 1E6) - écrit here

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

"La version 1 de l'API Google Maps Android est officiellement obsolète depuis le 3 décembre 2012." –

30

plutôt que de répéter les mathématiques tout au long de 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ù je dois créer un GeoPoint et j'ai un lat/lon je viens de le faire

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

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

6

Je pris le lat/long de this page et écrit sans point ... ça a marché très bien, ma maison est là où il devrait être;)

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

1

Je trouve la solution peut-être il vous aidera.

1) D'abord, vous avez des données (emplacement) en format formate. 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);

Questions connexes