PC SOFT

FORUMS PROFESSIONNELS
WINDEVWEBDEV et WINDEV Mobile

Accueil → WINDEV Mobile 2025 → Comment calculer le facteur de zoom de la carte fonction d'un cercle
Comment calculer le facteur de zoom de la carte fonction d'un cercle
Débuté par Pascal BOULESTEIX, 01 juin 2026 15:40 - 4 réponses
Membre enregistré
1 259 messages
Posté le 01 juin 2026 - 15:40
Bonjour à tous
J'utilise le composant carte qui affiche les cartes Google.
Je souhaite tracer un cercle sur la carte au diamètre choisi par l'utilisateur.
Comment calculer le facteur de zoom à affecter à la carte afin que le cercle remplisse la carte ?

--
Pascal Boulesteix
Applications Visiolittoral et WNat
Membre enregistré
1 072 messages
Posté le 02 juin 2026 - 13:14
Bonjour,
avez-vous essayé la fonction :

CarteAfficheZone (Fonction)
https://doc.pcsoft.fr/fr-FR/?1000025535

Lorsque vous placez le cercle, vous récupérez les coordonnées du centre de ce cercle, vous soustrayez le rayon en mètres pour obtenir le X gauche, vous ajoutez le rayon pour le X droit, même opération pour les Y, puis vous faites appel à la fonction.

je n'ai pas testé, je n'utilise pas le champ carte.


Sinon, vous avez cette page sur laquelle l'outil de conversion vous donne la dimension affichée pour une tuile en fonction du niveau de zoom :

https://developers.arcgis.com/documentation/mapping-and-location-services/reference/zoom-levels-and-scale/

par exemple, pour une tuile Vecteur avec un niveau de zoom 23 = 35.2655368 m
niveau de zoom 22 = 70.5310735 m
attention, lisez la page, il y a des différence avec MapBox ou autre.

mais l'opération sera beaucoup plus ardue car il vous faut calculer la zone affichable par le champ carte (dimensions du champ carte et calcul des coordonnées affichables avec la fonction CarteInfoXY, calcul de la dimension du cercle, centrage de la carte et détermination du meilleur niveau de zoom selon les valeurs obtenues avec l'outil de conversion

Cdlt
Membre enregistré
320 messages
Posté le 02 juin 2026 - 15:56
Bonjour,

Cédric à raison, j'utilise la fonction CarteAfficheZone() pour zoomer automatiquement sur une zone où j'ai dessiné une forme.

Voici un bout de code allégé.
En sachant que j'utilise ce calcul uniquement pour la France (à adapter s'il doit être utilisé en dehors)

// Position de la Tour Eiffel
// --------------------------
gPosition est une geoPosition
gPosition.Latitude = 48.85837
gPosition.Longitude = 2.294481

// Affichage du cercle
// -------------------
nRayon est un entier = 500 // Rayon du cercle en mètres (autour de la Tour Eiffel)
cCercle est un CarteCercle
cCercle.Centre = gPosition
cCercle.Rayon = nRayon
CarteAjouteForme(Carte1,cCercle)

// Calcul la zone à afficher (zoom automatique)
// -------------------------------------------------
// Explication rapide :
// La Terre fait en moyenne 1 degré de latitude (soit environ 111 320 mètres.)
// Si on avance de 500m (rayon du cercle) vers le nord, il faut donc ajouter 500/111320 (soit environ 0,00449 degrés à la latitude).
// Pour la longitude, il faut corriger avec le cosinus de la latitude (46 degré en moyenne pour la France)
// Par conséquent, si on avance de 500m (rayon du cercle) vers le sud, il faut donc ajouter 500/(111320*Cos(46)) (soit environ 0,00695 degrés à la longitude)
gPosNO est une geoPosition
gPosSE est une geoPosition
gPosNO.Latitude = (gPosition.Latitude+(nRayon/111320))
gPosNO.Longitude = (gPosition.Longitude-(nRayon/(111320*Cosinus(46))))
gPosSE.Latitude = (gPosition.Latitude-(nRayon/111320))
gPosSE.Longitude = (gPosition.Longitude+(nRayon/(111320*Cosinus(46))))
CarteAfficheZone(Carte1,gPosNO,gPosSE)


Cdlt
Message modifié, 02 juin 2026 - 15:57
Membre enregistré
1 259 messages
Posté le 02 juin 2026 - 17:50
Merci pour vos idées.

CarteAfficheZone rend bien visible la zone, mais ça ne zoome pas (Le carte.zoom reste le même)

--
Pascal Boulesteix
Applications Visiolittoral et WNat
Message modifié, 02 juin 2026 - 17:51
Membre enregistré
1 259 messages
Posté le 02 juin 2026 - 18:27
Par contre CarteLimiteZone fait le job, mais avec une grosse zone tampon.

Par centre, le calcul des angles NO et SE est très correcte.




--
Pascal Boulesteix
Applications Visiolittoral et WNat