我有一个bing地图和两个点: Point1,Point2和我想计算这两点之间的距离?那可能吗? 如果我想在point1和point2之间以及接近point2之间的路径的三分之二处放上一个圆圈......我该如何做到这一点?计算bing地图中两点之间的距离
回答
请参阅Haversine甚至更好的Vincenty公式如何解决这个问题。
下面的代码使用haversines方式获得的距离:
public double GetDistanceBetweenPoints(double lat1, double long1, double lat2, double long2)
{
double distance = 0;
double dLat = (lat2 - lat1)/180* Math.PI;
double dLong = (long2 - long1)/180 * Math.PI;
double a = Math.Sin(dLat/2) * Math.Sin(dLat/2)
+ Math.Cos(lat1/180* Math.PI) * Math.Cos(lat2/180* Math.PI)
* Math.Sin(dLong/2) * Math.Sin(dLong/2);
double c = 2 * Math.Atan2(Math.Sqrt(a), Math.Sqrt(1 - a));
//Calculate radius of earth
// For this you can assume any of the two points.
double radiusE = 6378135; // Equatorial radius, in metres
double radiusP = 6356750; // Polar Radius
//Numerator part of function
double nr = Math.Pow(radiusE * radiusP * Math.Cos(lat1/180 * Math.PI), 2);
//Denominator part of the function
double dr = Math.Pow(radiusE * Math.Cos(lat1/180 * Math.PI), 2)
+ Math.Pow(radiusP * Math.Sin(lat1/180 * Math.PI), 2);
double radius = Math.Sqrt(nr/dr);
//Calculate distance in meters.
distance = radius * c;
return distance; // distance in meters
}
您可以找到相关信息here一个很好的网站。
如果您需要更准确的结果或想要执行一些数学运算(例如将圆形转换为sperioid /投影),则可以使用地理库进行(重新)投影和计算操作。看看DotSpatial或SharpMap和samples/unittests/sources there ...这可能有助于解决您的问题。
无论如何,如果您知道geodesic distance和bearing,那么您还可以计算得出的目标位置(圆的中心)的位置,例如,请参阅Vincenty's算法的“直接问题”。这里也有一些用于silverlight的useful algorithm implementations/.net
您也可以考虑在GIS Stackexchange上发布您的问题。他们讨论与您的GIS相关的问题。看看calculating lat long x-miles from point的问题(因为您现在已经知道整个距离),或者参阅这里的讨论关于distance calculations。这个问题与问题how to draw a point on a line in a given distance有关,并且几乎相同(因为您需要中心和半径)。
另一种选择是使用ArcGIS API for Silverlight,它还可以显示Bing地图。它是开源的,你可以在那里了解你需要的东西(或者只是使用它们,因为它们已经存在于SDK中)。请参阅示例中的Utilities示例选项卡。
正如我已经提到:看看this page以获得更多有关您的问题的信息。在那里你会找到一个公式,Javascript代码和一个Excel样本,用于根据给定的距离和从起始点的方位计算目的地点(请参见标题)。
将代码“转换”到c#-world应该不难。
Microsoft有一个GeoCoordinate.GetDistanceTo Method,它使用Haversine公式。
对于我来说,其他实现返回NaN的距离太小。我还没有遇到任何内置函数的问题。
哦,没有注意到之前。 Thanx – Beachwalker 2012-10-03 20:51:42
API正在变得越来越大!不知道那个,我在我自己的公共库中添加了一个Haversine实现来支持我的项目。猜猜我可以删除它知道,甜! – Depechie 2013-02-06 11:56:48
Windows应用商店应用似乎不支持... – LowDev1 2013-04-29 17:17:07
- 1. 无法计算谷歌地图中两点之间的距离
- 2. 如何计算谷歌地图中两点之间的距离?
- 3. 计算平坦的土地上的两点之间的距离
- 4. 计算相应图像中两点之间的距离
- 5. 计算matlab中点之间的距离
- 6. 如何计算两个地理点之间的距离
- 7. 快速计算两点之间的地理距离
- 8. 计算二维空间中两点之间的距离?
- 9. 计算两次之间的距离
- 10. windows phone 7 bing地图点之间的距离
- 11. 计算iOS上地图上2点之间的距离
- 12. 两地的距离计算
- 13. 计算点之间的距离
- 14. 如何计算点之间的距离?
- 15. 获取两个地理点之间的距离 - 离线地图
- 16. 两点之间的测地距离
- 17. 两个地理点之间的距离?
- 18. 如何计算Perl中两点之间的距离?
- 19. 如何计算GraphX,Scala中两个节点之间的距离?
- 20. 如何计算GPS JAVA中两点之间的距离?
- 21. 如何计算Java中两点之间的距离
- 22. 计算Google Maps for Ionic 2中两点之间的距离
- 23. 如何计算MkMapview中两点之间的距离?
- 24. 计算单张中两点之间的距离
- 25. 我如何计算Java中两个gps点之间的距离?
- 26. 算法来计算许多地理点之间的距离
- 27. 仅使用PHP计算两点之间的驾驶距离(必应地图)
- 28. 谷歌应用程序脚本地图API两点之间的距离计算
- 29. cuda两点计算距离
- 30. R中2个地理点之间的距离计算
+1。半胱氨酸是最常见的,非常适合确定任何两点之间的大致距离。 Vincenty给出了一个更好的近似值,因为它假定地球的形状是一个球体而不是一个完美的球体。最后的选择是导入Microsoft.SqlServer.Types.dll库并使用SqlGeography数据类型的STDistance()方法。这将给出最准确的结果,因为它使用椭球体模型(例如WGS84) - 就像SQL Server为地理数据类型所做的一样。 – 2012-04-16 14:56:27
非常感谢它的距离部分,但我怎么能显示在点1和点2之间的距离2/3的圆? – AboKevo 2012-04-16 15:36:34
结果是米,KM ....? – toroveneno 2013-04-02 17:58:49