1

Actuellement j'utilise le code suivant pour obtenir la latitude et la longitude minimum et maximum à partir d'un objet MapView (Google Maps).Comment obtenir la latitude et la longitude minimum/maximum à partir d'un MapView?

GeoPoint center = map.getMapCenter(); 
Double minLat = (center.getLatitudeE6() - (map.getLatitudeSpan()/2))/1E6; 
Double minLong = (center.getLongitudeE6() - (map.getLongitudeSpan()/2))/1E6; 
Double maxLat = (center.getLatitudeE6() + (map.getLatitudeSpan()/2))/1E6; 
Double maxLong = (center.getLongitudeE6() + (map.getLongitudeSpan()/2))/1E6; 

Malheureusement, cela ne me donne pas une sortie correcte. Je suis actuellement au niveau de zoom 18 dans MapView, centré sur le point (52.9476, -1.1452). La sortie du code ci-dessus donne les valeurs (52.947632, -181.145156, 52.947632, 178.854844) respectivement. Évidemment, il y a un problème ici en ce que la latitude minimale montrée est une impossibilité physique, et les latitudes sont exactement les mêmes que la latitude du centre. Je peux confirmer que le MapView lui-même montre l'emplacement correctement.

Quelqu'un peut-il expliquer pourquoi cela se produit? De toutes les solutions à ce problème, j'ai vu, c'est la seule que les gens semblent avoir eu de la chance et ça ne marche toujours pas!

Répondre

1

J'ai maintenant résolu ce problème moi-même. Essentiellement, avant que la projection de MapView soit prête, ces fonctions renverront respectivement 0 et 360 * 1E6 pour la latitude et la longitude. En tant que tel, tout ce qui doit être fait est dans un AsyncTask effectuer des contrôles sur ces valeurs jusqu'à ce qu'elles aient été préparées.

Questions connexes