similaires à de ggomeze réponse en remplaçant une méthode *draw()
mais il peut être préférable de passer outre dispatchDraw()
dans MapView
. De cette façon, vous pouvez bloquer le tirage pour le niveau de zoom où les tuiles sont vides. Notez également qu'il est bon de centrer la carte à ce stade, car si vous effectuez un zoom avant avec des gestes tactiles, le fait de régler manuellement le zoom d'un niveau peut entraîner le décalage de la carte à chaque fois (ce qui donne l'apparence MapView
un peu plus douteux!).
@Override
public void dispatchDraw(Canvas canvas) {
//limit zoom level
if(getZoomLevel() == 1){
getController().setZoom(2);
getController().setCenter(new GeoPoint(0, 0));
//dont draw as it will just be blank and then jump
return;
}
super.dispatchDraw(canvas);
}
Cela pourrait être amélioré en suivant le niveau de zoom alors que le geste a lieu aussi pour que l'utilisateur ne peut pas voir le zoom partiel au niveau de zoom le plus bas bloqué (1) tout en faisant des gestes, mais j'imagine le cas ci-dessus conviendra le plus et est beaucoup plus facile!
Merci pour la réponse rapide. Cependant, ce n'est pas une solution à mon problème. Avec ce code, vous définissez simplement le niveau de zoom initial. Mais cela n'empêche pas l'utilisateur de zoomer en arrière, et d'avoir cette vue de carte laide avec un niveau de zoom égal à 1 (deux africas, deux americas) – ggomeze
si vous ne cherchez pas l'option standart seulement, réglez le limiteur manuellement :) – polyakovsky
Pourquoi Limitez-vous ce que l'utilisateur peut faire? Et s'ils veulent voir le monde entier? – Falmarri