Afficher une carte statique Google Map

https://developers.google.com/maps/documentation/static-maps/intro?hl=fr

Calcul de distances :

https://openclassrooms.com/forum/sujet/calcul-distance-entre-2-points-latitude-longitude

007julien

1 octobre 2015 à 12:47:13
Les principes sont simples.

Pour deux points distants (Paris-New-York par exemple)

Soit A et B les deux points, O le centre de la terre.
Le produit scalaire de vecteurs unitaires portés par OA et OB donne le cosinius et donc l'angle des vecteurs en radians. Il suffit alors de multiplier cet angle par le rayon de la terre (40 000 km/2.PI d'après la définition initiale du mètre).

Les vecteurs unitaires sont donnés par xA=cos(latA)*cos(lngA), yA= cos(latA)*sin(lngA) et zA=sin(latA) (avec un préfixe Math en javascript). Le produit scalaire : xA*xB+xB*yB+zA*zB.
L'angle alpha multiplié par le rayon donne la distance d'où :
Distance = Math.acos( xA.xB+xB.yB+zA.zB)*20000/Math.PI

Pour deux points plus proches (Paris-Marseille)

Il est alors possible de raisonner sur une carte plane en remarquant qu'une différence de 1 minute de latitude correspond à 1852 mètres. En effet, le mètre ayant été, encore une fois, définit comme la 40 000 millième partie du méridien terrestre, 1 degré d'angle correspond à 40 000 / 360 soit 111,111 km et une minute à 111,111 /60 ce qui donne 1852 mètres (c'est la définition du Mille marin).

Pour les différences de longitudes, il faut appliquer une coefficient réducteur égal au cosinus de la latitude moyenne (car nous ne sommes plus sur un grand cercle mais sur un cercle dont le rayon est réduit).

Ayant calculé les distances sur les deux axes de la carte, l'application du théorème de Pythagore donne la distance.

Autrement dit : DeltaY = latA-latB et deltaX = (lngA-lngB).Math.cos((latA+latB)/2).
Distance= Mat.sqrt(DeltaX*DeltaX+DeltaY*DelatY)

On vérifie que la première formule reste applicable au second cas, même pour des angles quasi nuls.

-
Edité par 007julien 1 octobre 2015 à 12:51:30