C# bing映射两个位置之间的直线

C# bing映射两个位置之间的直线,c#,jquery,bing-maps,C#,Jquery,Bing Maps,我正在使用bing地图。至于现在,它在两个地点之间划了一条线,但它使用的是道路。我希望它是飞机视图,这样它就可以在点之间画一条直线,并告诉我它们之间的距离。我现在用的是: var startwaypoint = new Microsoft.Maps.Directions.Waypoint({ location: new Microsoft.Maps.Location(lat1, lon1) }); bingDirections.addWaypoint(startwaypoint); // end

我正在使用bing地图。至于现在,它在两个地点之间划了一条线,但它使用的是道路。我希望它是飞机视图,这样它就可以在点之间画一条直线,并告诉我它们之间的距离。我现在用的是:

var startwaypoint = new Microsoft.Maps.Directions.Waypoint({ location: new Microsoft.Maps.Location(lat1, lon1) });
bingDirections.addWaypoint(startwaypoint);
// end
var endwaypoint = new Microsoft.Maps.Directions.Waypoint({ location: new Microsoft.Maps.Location(lat2, lon2) });
bingDirections.addWaypoint(endwaypoint);

在这里,我把坐标设为lat1和lon1

我们的同事阿拉斯泰尔写了一篇文章,在Bing Maps V7上绘制测地线(大圆)。我敢肯定,你可以从他的文章中获得重要的东西,并修改JavaScript代码,使其在你的C#控件上工作

见文章:

下面是您应该能够在C中适应的JavaScript代码:

//创建数组之间绘制的线的测地线近似值
//通过将每条线划分为若干段来表示点。
功能到设计(点,n){
if(!n){n=32};//要使用的线段数
var locs=新数组();
对于(变量i=0;i对于(var k=0;k我们的同事Alastair写了一篇文章,在Bing Maps V7上绘制测地线(大圆)。我非常确定您可以从他的文章中获得重要信息,并修改JavaScript代码,使其在您的C#控件上工作

见文章:

下面是您应该能够在C中适应的JavaScript代码:

//创建数组之间绘制的线的测地线近似值
//通过将每条线划分为若干段来表示点。
功能到设计(点,n){
if(!n){n=32};//要使用的线段数
var locs=新数组();
对于(变量i=0;i对于(var k=0;k我们的同事Alastair写了一篇文章,在Bing Maps V7上绘制测地线(大圆)。我非常确定您可以从他的文章中获得重要信息,并修改JavaScript代码,使其在您的C#控件上工作

见文章:

下面是您应该能够在C中适应的JavaScript代码:

//创建数组之间绘制的线的测地线近似值
//通过将每条线划分为若干段来表示点。
功能到设计(点,n){
if(!n){n=32};//要使用的线段数
var locs=新数组();
对于(变量i=0;i对于(var k=0;k我们的同事Alastair写了一篇文章,在Bing Maps V7上绘制测地线(大圆)。我非常确定您可以从他的文章中获得重要信息,并修改JavaScript代码,使其在您的C#控件上工作

见文章:

下面是您应该能够在C中适应的JavaScript代码:

//创建数组之间绘制的线的测地线近似值
//通过将每条线划分为若干段来表示点。
功能到设计(点,n){
if(!n){n=32};//要使用的线段数
var locs=新数组();
对于(变量i=0;i对于(var k=0;k)很多!但是如何获得多边形上的距离?您需要这两点之间的距离?您可以使用Haversine距离计算,或者只使用GeoCoordination类(System.Device)上的GetDistanceTo()方法-请参阅:坦克很多!但是如何获得多边形上的距离?您需要这两点之间的距离?您可以使用Haversine距离计算,或者只使用GeoCoordination类(System.Device)上的GetDistanceTo()方法-请参阅:坦克很多!但是如何获得多边形上的距离?您需要这两点之间的距离?您可以使用Haversine距离计算,或者只使用GeoCoordination类(System.Device)上的GetDistanceTo()方法-看:坦克很多!但是我如何得到多边形上的距离?你需要这两点之间的距离?你可以使用Haversine距离计算或使用GetDistanceTo()方法
    // Creates geodesic approximation of the lines drawn between an array
// of points, by dividing each line into a number of segments.
function ToGeodesic(points, n) {
  if (!n) { n = 32 }; // The number of line segments to use
  var locs = new Array();
  for (var i = 0; i < points.length - 1; i++) {
    with (Math) {
      // Convert coordinates from degrees to Radians
      var lat1 = points[i].latitude * (PI / 180);
      var lon1 = points[i].longitude * (PI / 180);
      var lat2 = points[i + 1].latitude * (PI / 180);
      var lon2 = points[i + 1].longitude * (PI / 180);
      // Calculate the total extent of the route
      var d = 2 * asin(sqrt(pow((sin((lat1 - lat2) / 2)), 2) + cos(lat1) * cos(lat2) * pow((sin((lon1 - lon2) / 2)), 2)));
      // Calculate  positions at fixed intervals along the route
      for (var k = 0; k <= n; k++) {
        var f = (k / n);
        var A = sin((1 - f) * d) / sin(d);
        var B = sin(f * d) / sin(d);
        // Obtain 3D Cartesian coordinates of each point
        var x = A * cos(lat1) * cos(lon1) + B * cos(lat2) * cos(lon2);
        var y = A * cos(lat1) * sin(lon1) + B * cos(lat2) * sin(lon2);
        var z = A * sin(lat1) + B * sin(lat2);
        // Convert these to latitude/longitude
        var lat = atan2(z, sqrt(pow(x, 2) + pow(y, 2)));
        var lon = atan2(y, x);
        // Create a Location (remember to convert back to degrees)
        var p = new Microsoft.Maps.Location(lat / (PI / 180), lon / (PI / 180));
        // Add this to the array
        locs.push(p);
      }
    }
  }
  return locs;

}