Ich brauche eine Funktion Abstand zwischen Punkt A zu berechnen und zu Punkt B.So verwendet System.Spatial.GeographyPoint
Namespace System.Spatial
scheint genau das zu sein, was ich brauche, aber ich kann nicht verstehen, wie es zu benutzen.
IPoint
ist eine Schnittstelle, die Latitude
und Longitude
beide vom Typ double
bietet.
Erster Versuch:
public static double CalculateDistance(IPoint pointA, IPoint pointB)
{
var gp1 = GeographyPoint.Create(pointA.Latitude, pointA.Longitude);
var gp2 = GeographyPoint.Create(pointB.Latitude, pointB.Longitude);
return gp1.Distance(gp2) ?? 0;
}
, die mit einem NotImplementedException
auf point1.Distance(point2)
endet. Die Nachricht ist in Französisch, aber im Grunde sagt es "Keine Operation registriert. Bitte bieten Sie Betrieb mit Eigenschaft SpatialImplementation.CurrentImplementation.Operations".
Ok, werde ich dies dann versuchen:
public static double CalculateDistance(IPoint pointA, IPoint pointB)
{
var gp1 = GeographyPoint.Create(pointA.Latitude, pointA.Longitude);
var gp2 = GeographyPoint.Create(pointB.Latitude, pointB.Longitude);
return SpatialImplementation.CurrentImplementation.Operations.Distance(gp1, gp2);
}
Jetzt habe ich eine NullReferenceException
auf SpatialImplementation.CurrentImplementation.Operations
.
Msdn ist nicht viel wortreich darüber.
Jeder kann erklären, wie man diese Implementierungen bekommt?
Wie rufen Sie diese Methode an, und haben Sie die "IPoint" -Schnittstelle mit einer Klasse implementiert? – Habib
Sicher habe ich es implementiert. Es bietet nur Breiten- und Längengrad. Die Fehler sind genau das, was ich gesagt habe. Ich rufe das jetzt aus dem Komponententest an. – Johnny5