zoom pour s'adapter à tous les marqueurs sur la carte google maps v2
Je veux régler le niveau de zoom de la carte pour s'adapter à tous les marqueurs sur la carte. J'ai utilisé la méthode suivante comme dit par beaucoup de gens, mais il ne fonctionne pas pour moi. C'est l'affichage de certains autres point.
if (positions.size() > 0) {
final LatLngBounds.Builder builder = new LatLngBounds.Builder();
for (Marker m : positions) {
builder.include(m.getPosition());
}
builder.include(positions.get(i).getPosition());
}
try {
googleMap.setOnCameraChangeListener(new OnCameraChangeListener() {
@Override
public void onCameraChange(CameraPosition arg0) {
googleMap.moveCamera(CameraUpdateFactory.newLatLngBounds(
builder.build(), UserDataManager.getInstance().getWidth(),
UserDataManager.getInstance().getWidth(),0));
googleMap.setOnCameraChangeListener(null);
}
});
} catch (IllegalStateException e) {
//TODO: handle exception
final View mapView = getSupportFragmentManager()
.findFragmentById(R.id.map).getView();
if (mapView.getViewTreeObserver().isAlive()) {
mapView.getViewTreeObserver().addOnGlobalLayoutListener(
new OnGlobalLayoutListener() {
//We check which build version we are using.
@Override
public void onGlobalLayout() {
if (Build.VERSION.SDK_INT < Build.VERSION_CODES.JELLY_BEAN) {
mapView.getViewTreeObserver()
.removeGlobalOnLayoutListener(
this);
} else {
mapView.getViewTreeObserver()
.removeOnGlobalLayoutListener(
this);
}
googleMap.setOnCameraChangeListener(new OnCameraChangeListener() {
@Override
public void onCameraChange(CameraPosition arg0) {
googleMap.moveCamera(CameraUpdateFactory.newLatLngBounds(
builder.build(),
UserDataManager.getInstance().getWidth(),
UserDataManager.getInstance().getWidth(),0));
googleMap.setOnCameraChangeListener(null);
}
});
}
});
}
}
}
Merci pour la manipulation de l'exception IllegalStateException 🙂
OriginalL'auteur Sharmilee | 2013-05-07
Vous devez vous connecter pour publier un commentaire.
Essayez d'utiliser cette
Cochez cette Google Maps v2 bibliothèque que j'ai créé, qui comprend cette fonctionnalité
utilisez simplement
EDIT :
Obtenir de l'emplacement actuel
Cela devrait fonctionner. Il suffit de ne pas coder en dur de 5 pixels et l'utilisation de la densité de pixels indépendants à la place.
en utilisant ce code j'obtiens une erreur comme "la taille de la carte ne doit pas être 0"... une idée ?
Utilisation newLatLngBounds(limites, 25,25,5); La 25,25 est la largeur et la hauteur, de définir votre propre largeur et la hauteur
Utilisez cette
int width = getResources().getDisplayMetrics().widthPixels;
newLatLngBounds(bounds, width, width, 25);
Obtenir la largeur de l'écran en pixels et en formant un rectangle(comme par docs)/carré de côté de longueur égale à la largeur de l'écran. Trouvé 25 rembourrage pour être décent dans mon cas.OriginalL'auteur Girish Nair
OriginalL'auteur Teraiya Mayur