Calculer une distance entre deux points

4.0
Tags: #<Tag:0x00007f7d700e5098>
Calculer une distance entre deux points
0

#1

Bonjour,
J’ai un objet « Travaux » qui est lié à un Prestataire et un Bien.

Je voudrais calculer la distance entre le prestataire et le bien et l’afficher dans le formulaire. J’ai leurs coordonnées GPS (latitude et longitude).

Pourriez-vous me dire svp si cela est faisable et m’aider à me dire ou le faire ?

J’ai trouvé sur le net cette fonction mais je ne sais pas où la mettre :

//Conversion des degrés en radian
function convertRad(input){
        return (Math.PI * input)/180;
}
 
function Distance(lat_a_degre, lon_a_degre, lat_b_degre, lon_b_degre){
     
        R = 6378000 //Rayon de la terre en mètre
 
    lat_a = convertRad(lat_a_degre);
    lon_a = convertRad(lon_a_degre);
    lat_b = convertRad(lat_b_degre);
    lon_b = convertRad(lon_b_degre);
     
    d = R * (Math.PI/2 - Math.asin( Math.sin(lat_b) * Math.sin(lat_a) + Math.cos(lon_b - lon_a) * Math.cos(lat_b) * Math.cos(lat_a)))
    return d;
}

Merci d’avance pour votre aide.
Abed.


(David AZOULAY) #2

Je pense que votre besoin est plutôt de déterminer une distance au sens “routier” => personnellement j’utiliserais plutôt une API ad-hoc (genre l’API directions de Google) plutôt qu’un calcul mathémaique “à vol d’oiseau”

cf. https://www.simplicite.io/resources/4.0/javadoc/com/simplicite/util/tools/GMapTool.html (et sa méthode distance en particulier)

Ceci étant dit votre code est, comme n’importe quel code, facilement transposable en code Simplicité soit coté client (Javascript) soit coté serveur (Javascript Rhino ou Java).


#3

Merci @david, c’est effectivement au sens routier que je cherche, je vais utiliser cette API.
Abed.


(David AZOULAY) #4

Ça doit être un pb de ; vs ,


(David AZOULAY) #5

On a rendu l’API plus tolérante aux valeurs de champs de type geocoordinates (dans Simplicité le format est <lat>;<lng>, chez Google c’est <lat>,<lng> => on change désormais ; en ,)


#6

Merci @david, mais moi je n’ai rien demandé. Est-ce que cela veut dire que maintenant il faut qu’on retire tous nos “replace” dans nos appels à ces API ?

Par contre, je profite qu’on parle des coordonnées GPS pour dire qu’on a un pb avec certaines adresse qui ont leur coordonnées GPS supérieur à la taille autorisés dans Simplicité (adresse 22 et 24 suivantes) :

J’ai du changer le format de la zone de “coordonnées géographiques” à “Text < 254” pour que ça passe.


(David AZOULAY) #7

Ok on a passé la taille des champs de type geocoordonnates à 50 (contre 30 précédement)