2013-04-26 56 views
0

在Bing地图控件上绘制一条通过180度经度的线不能像我所期望的那样工作。如果我想画一条从(10,175)到(-10,-175)的直线 - 期望在(10度)线穿过赤道的北部,新西兰 - 我得到了一条延伸到全球的线路,穿过0度长的赤道(格林威治南部)。我如何绘制一条横贯180度长的线?通过180度长在Bing地图上绘制一条线

+1

端点具有不同的纬度,这意味着该线穿过赤道。你确定这就是你想要的吗? – michaelb958 2013-04-26 02:06:57

+0

是的,穿过赤道的线是无关紧要的。我期待在新西兰北部10度的地方穿过赤道的一条小直线,但Bing Maps正在画出大约350度长的线。我会在我的问题中澄清这一点。 – 2013-04-26 02:34:00

回答

0

,能够近似这由几乎在180度子午线绘制两条直线,从点一个然后从刚刚过去的180度子午线指向b。因此,在返回的IEnumerable<MapPolyLine>,其中a是具有负经度最近点与b是一个积极的经度的最近点的方法:

var aa = Math.Abs(b.Longitude - a.Longitude - 360); 
var bb = Math.Abs(b.Latitude - a.Latitude); 

var aaa = 180 + a.Longitude; 
var bbb = (bb/aa) * aaa; 

var line1 = new MapPolyline 
{ 
    Color = Color.FromArgb(255, 0, 255, 0), 
    Width = 5 
}; 
line1.Locations.Add(a); 
line1.Locations.Add(new Location(a.Latitude - bbb, -179.999)); 
yield return line1; 

var line2 = new MapPolyline 
{ 
    Color = Color.FromArgb(255, 0, 0, 255), 
    Width = 5 
}; 
line2.Locations.Add(new Location(b.Latitude + bb - bbb, 179.999)); 
line2.Locations.Add(b); 
yield return line2; 

这可以进一步清理和仅仅是一个解决办法。也有一些文物可以出现,但这似乎很可靠。