2013-04-26 94 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; 

這可以進一步清理和僅僅是一個解決辦法。也有一些文物可以出現,但這似乎很可靠。