Comment puis-je déterminer la distance entre deux ensembles de coordonnées lattitude / longitude?
Je suis en train d'écrire quelque chose qui va déterminer la distance entre deux ensembles de coordonnées de latitude/longitude.
Je suis en utilisant le code suivant que j'ai trouvé sur ce site:
public static double distance (double lat1, double lon1, double lat2, double lon2) {
double lat1 = Convert.ToDouble(latitude);
double lon1 = Convert.ToDouble(longitude);
double lat2 = Convert.ToDouble(destlat);
double lon2 = Convert.ToDouble(destlon);
double theta = toRadians(lon1-lon2);
lat1 = toRadians(lat1);
lon1 = toRadians(lon1);
lat2 = toRadians(lat2);
lon2 = toRadians(lon2);
double dist = sin(lat1)*sin(lat2) + cos(lat1)*cos(lat2)*cos(theta);
dist = toDegrees(acos(dist)) * 60 * 1.1515 * 1.609344 * 1000;
return dist;
}
Mon problème est que je suis en cours d'exécution dans l'erreur de compilation "Le nom de "toRadians'/'cos'/'sin'toDegrees" n'existe pas dans le contexte actuel..." Ce que je fais mal???
source d'informationauteur Brodie
Vous devez vous connecter pour publier un commentaire.
Vous pouvez utiliser les éléments suivants de classe C#:
Utilisation:
Source: Chris Pietschmann - Calculer la Distance Entre les Géocodes en C# et JavaScript
Vous pouvez écrire un
toRadians
fonction comme ceci:Vous pouvez écrire un
toDegrees
fonction comme ceci:Vous devez remplacer
sin
etcos
avecMath.Sin
etMath.Cos
.Cela ressemble à C#.
Vous devez d'abord définir
toRadians
ettoDegrees
:Ensuite, pour utiliser les fonctions trigonométriques, vous devez utiliser
Math.Sin
Math.Cos
etc.et
Commentaires:
Qu'est-ce que cela? Où sont
latitude
longitude
destlat
etdestlon
défini? De plus, il semble que vous avezlat1
lon1
lat2
etlon2
que les paramètres de cette méthode, de sorte que vous ne pouvez pas définir des habitants ici avec le même nom.Ce qui est mauvais style. Si
lat1
représente une latitude en degrés, il est de loin préférable de calculer un radians-équivalent de la valeur delat1
comme ceci:Donc remplacer le ci-dessus avec:
Enfin:
Ce qui est mauvais style trop. La première formule et la seconde formule ne peut pas à la fois, éventuellement, représentent la distance que vous êtes en train de calculer. Vous devez affecter le résultat de la première formule à une variable avec un nom plus significatif. En tant que pire des cas, au moins:
Je sais que cette question est vraiment vieux, mais au cas où quelqu'un d'autre bute sur ce, l'utilisation
GeoCoordinate
deSystem.Device
:Calcul de la Distance entre la Latitude et la Longitude des points...
double Lat1 = Convert.ToDouble(latitude);
Vous allez avoir besoin d'adapter ce code un peu.
Comme SLaks, dit, vous devez définir votre propre
toRadians()
méthode parce que .NET n'est pas une version native.Vous aurez aussi besoin de changer les appels à cos() et sin (): des Mathématiques.Cos() et Math.Sin()