我還沒有解決我的問題,但現在,我可以繼續用下面的小解決方案。
/// <summary>
/// Is in the geo rectable.
/// http://www.movable-type.co.uk/scripts/latlong.html
/// </summary>
/// <returns></returns>
public static bool InGeoRectable(string point, string[] rectangle, double distance = 0)
{
double rectangleDiagonal = 0;
if (!rectangle.Any())
return false;
try
{
var enumerator = rectangle.GetEnumerator();
enumerator.MoveNext();
GeoCoordinate rectangleConner = (enumerator.Current as string).ToCoordinate();
while (enumerator.MoveNext())
{
double _distance = (enumerator.Current as string).ToCoordinate().GetDistanceTo(rectangleConner);
if (_distance > rectangleDiagonal)
rectangleDiagonal = _distance;
}
return !rectangle.Any(r => r.ToCoordinate().GetDistanceTo(point.ToCoordinate()) > (rectangleDiagonal + distance));
}
catch (Exception e)
{
throw;
}
}
,並使用System.Device.Location.GeoCoordinate
public static GeoCoordinate ToCoordinate(this string point)
{
string[] latLang = point.Split(',');
double _latitude = -91;
double _longitude = -181;
if (Double.TryParse(latLang[0].Trim(), out _latitude) && Double.TryParse(latLang[1].Trim(), out _longitude))
{
if (!Double.NaN.Equals(_latitude) && !Double.NaN.Equals(_longitude))
{
if ((_latitude >= -90 || _latitude <= 90) && (_longitude >= -180 || _longitude <= 180))
{
return new GeoCoordinate(_latitude, _longitude);
}
}
}
return new GeoCoordinate(_latitude, _longitude);
}
現在我可以調用與點組成一個矩形的列表,點我要搜索:
"-1.165677,37.105044099999986"
"-1.4522759,36.65112709999994"
"-1.165677,36.65112709999994"
"-1.4522759,37.105044099999986"
和"-1.2882998,36.8737025"
它的工作,這是我需要的,但我需要一個FAS TER和更可行的解決方案