7
votes

Android (MAPVIEW): Comment définir le niveau de zoom de 4 miles dans la carteView?

J'ai une latitude et la longitude (Geopoint) qui est le centre de la carte. Je veux régler le niveau de zoom de 4 milles la distance de la latitude et de la longitude que j'ai.

Merci d'avance,


0 commentaires

3 Réponses :


-2
votes

jouer avec le .setzoom (int); paramètre de votre carte. Je pense que c'est environ 15:

donc mymap.setzoom (15);


3 commentaires

Je tiens à définir dynamiquement le niveau de zoom basé sur certaines régions. Est-ce possible? Je ne veux pas de disque dur "15"


Faites une base de données avec région / Zoomlevel et lire à partir de celui-ci :-) Vous pouvez utiliser une base de données SQLITE pour stocker les données.


MapView n'a pas de méthode Stinzoom. CarteController fait.



3
votes

Vous pouvez utiliser la fonction SETZOOM () - pour le faire. Le code ci-dessous peut être trouvé dans Cet exemple .

mc = mapView.getController();
String coordinates[] = {"1.352566007", "103.78921587"};
double lat = Double.parseDouble(coordinates[0]);
double lng = Double.parseDouble(coordinates[1]);

p = new GeoPoint(
    (int) (lat * 1E6), 
    (int) (lng * 1E6));

mc.animateTo(p);
mc.setZoom(17); 


6 commentaires

Existe-t-il une documentation sur Google Maps, concernant les niveaux de zoom et la distance.


Je vois dans un autre commentaire de la vôtre, vous dites que vous voulez la définir de manière dynamique sur certaines régions. Pouvez-vous être un peu plus précis? Si je comprends bien, vous pouvez obtenir les coordonnées de la carte et utiliser un bloc de commutation pour définir les niveaux de zoom. À un moment donné, vous devrez cartographier les niveaux de zoom et les régions de toute façon.


Comment vous disez que 4 milles de distance correspond au niveau de zoom de 17?


Basé sur la préférence de l'utilisateur doit zoomer ou pan. Pour être plus précis, devez zoomer 4 miles de distance entre la géopoing correspondante qui est le point central de la carte.


Le 17 était juste une valeur aléatoire. Je suis toujours tout à fait sûr de ce que vous voulez dire, mais je pense que ce lien peut être aider groups.google.com/group/google-maps-js-api-v3/browse_thread/ ... . Ce n'est pas directement ce dont vous avez besoin, mais cela vous aidera à y arriver. En outre, voici un lien vers Google Maps et ses échelles entre le niveau de zoom: michal.guerquin.com/googlemaps.html


Cela ne répond pas à la question de relier des kilomètres à zoomlevel, et les liens discutent de la quantité de pixels / sotrage nécessaires à Google Maps, rien à voir avec la question de l'utilisateur.



15
votes

Résolu:

de Androod Google API: Zoomlevel établit le zoomlevel de la carte. La valeur sera serrée entre 1 et 21 inclusivement, mais toutes les zones n'ont pas de tuiles à des niveaux de zoom plus élevés. Cela définit simplement le niveau du zoom directement; Paramètres: Zoomlevel - à Zoomlevel 1, l'équateur de la terre est de 256 pixels longs. Chaque niveau de zoom successif est magnifié par un facteur de 2. Retour: le nouveau niveau de zoom, entre 1 et 21 inclus.

donc Compte tenu de l'équateur E = 40075 km ou 21,638,8 miles Compte tenu de la distance à zoomer D = 20 km ou miles

Le niveau de zoom: l = log2 (E / D) +1

Ceci est la méthode simple que j'ai utilisée N'oubliez pas de définir E = 21.638,8 Si vous souhaitez utiliser les miles ... xxx


1 commentaires

Cette réponse ne compte pas la taille de la vue Carte. Sur un grand écran, vous voyez plus de terrain sur le même niveau de zoom. E.G., pour la largeur de 512 pixels, vous avez besoin de zoom Niveau 2 pour afficher la Terre entière, pour 1024 (sur une tablette) - Niveau de zoom 3, etc.