0

在 Bing Maps 控件上绘制一条穿过 180 度经度的线并不像我预期的那样工作。180 度经度从北到南穿过太平洋,所以如果我想画一条从 (10, 175) 到 (-10, -175) 的线 - 期待一条小 (10 度) 线穿过赤道稍微以北新西兰 - 我有一条线一直延伸到全球,以 0 度的长度穿过赤道(格林威治以南)。如何画一条横穿 180 度长的线?

4

1 回答 1

0

可以通过绘制两条线来近似这一点,从点a几乎在 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;

这可以进一步清理,只是一种解决方法。也可能出现一些伪影,但这似乎非常可靠。

于 2013-04-26T03:40:54.567 回答