示例#1
0
	/// <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));
	}