/// <summary> /// Calculate the position of the object relative the a center /// </summary> /// <param name="_center"></param> /// <returns></returns> private Vector2 AsVertexRelativeTo(GeoCoordinate _center) { /* * center lonDiffLoc * +-------+ * | | * +-------+ * latDiffLoc mLoc */ GeoCoordinate latDiffLoc = new GeoCoordinate(latLng.Latitude, _center.Longitude, 0); GeoCoordinate lonDiffLoc = new GeoCoordinate(_center.Latitude, latLng.Longitude, 0); double latDiff = _center.GetMeterDistanceTo(latDiffLoc); double lonDiff = _center.GetMeterDistanceTo(lonDiffLoc); //Les distances étant des valeurs absolues, il faut parfois appliquer un correctif if (latDiffLoc.Latitude < _center.Latitude) latDiff *= -1; //Ceci risque de ne pas fonctionner si les deux points sont autour du méridien de Greenwhich if (lonDiffLoc.Longitude < _center.Longitude) lonDiff *= -1; //Longitude est X car elle est est-ouest, tandis que latitude est Z car elle est nord-sud //La différence de latitude est mise au négatif car une valeur plus proche de l'équateur est plus petite return new Vector2((float)lonDiff, (float)(latDiff)); }