codage rigide La Setzoom () dans ONCREATE () se sent très antiquité et j'aimerais améliorer l'expérience utilisateur en présentant initialement le MapView Définir le zoom jusqu'à ce que tous les géopoints/superchauffies soient visibles sur la carte.
Comment cela peut-il être fait par magie automatique?
Un peu comme ça
int minLat = Integer.MAX_VALUE;
int maxLat = Integer.MIN_VALUE;
int minLon = Integer.MAX_VALUE;
int maxLon = Integer.MIN_VALUE;
for (GeoPoint item : items)
{
int lat = item.getLatitudeE6();
int lon = item.getLongitudeE6();
maxLat = Math.max(lat, maxLat);
minLat = Math.min(lat, minLat);
maxLon = Math.max(lon, maxLon);
minLon = Math.min(lon, minLon);
}
mapController.zoomToSpan(Math.abs(maxLat - minLat), Math.abs(maxLon - minLon));
mapController.animateTo(new GeoPoint( (maxLat + minLat)/2,
(maxLon + minLon)/2 ));
edit:
Ryan a donné une belle suggestion: mettre un rembourrage afin que certains points ne se trouvent pas sur les bords (merci Ryan!)
double fitFactor = 1.5;
mapController.zoomToSpan((int) (Math.abs(maxLat - minLat) * fitFactor), (int)(Math.abs(maxLon - minLon) * fitFactor));
Il n'y a pas de moyen magique d'y parvenir. Je suggère de parcourir tous vos superpositions pour obtenir le centre et la couverture de tous ces articles. Puis réglez le centre et de la plage en conséquence pour la carte