Xamarin表单 - 突出显示WinPhone 8.1部分的路由

时间:2016-06-30 15:35:44

标签: windows-phone-8.1 maps xamarin.forms

很长一段时间以来,我一直在努力使用crosslineform作为折线。 我做到了并且效果很好,我首先按照 Map Control 教程,然后是 Highlight a Route on a Map 教程。

然后,如果有任何更改,我会更新代码以使其重新加载,但是,我遇到了问题但我无法弄清楚...它适用于Android和Android的iOS。

polyline.Path = new Geopath(coordinates); throws Catastrophic failure (Exception from HRESULT: 0x8000FFFF (E_UNEXPECTED)) 问题是我的另外两个渲染器(Android和iOS)工作..也许有些东西是不可能的,因为我使用WinPhone8.1不像教程,即UWP。

public class CustomMapRenderer : MapRenderer
{
    MapControl nativeMap;
    CustomMap formsMap;

    protected override void OnElementChanged(ElementChangedEventArgs<Map> e)
    {
        base.OnElementChanged(e);

        if (e.OldElement != null)
        {
            nativeMap = Control as MapControl;
        }

        if (e.NewElement != null)
        {
            formsMap = (CustomMap)e.NewElement;
            nativeMap = Control as MapControl;

            UpdatePolyLine();
        }
    }

    protected override void OnElementPropertyChanged(object sender, System.ComponentModel.PropertyChangedEventArgs e)
    {
        base.OnElementPropertyChanged(sender, e);
        if (this.Element == null || this.Control == null)
            return;

        if (e.PropertyName == CustomMap.RouteCoordinatesProperty.PropertyName)
        {
            UpdatePolyLine();
        }
    }

    private void UpdatePolyLine()
    {
        if (nativeMap != null)
        {
            var coordinates = new List<BasicGeoposition>();
            foreach (var position in formsMap.RouteCoordinates)
            {
                coordinates.Add(new BasicGeoposition() { Latitude = position.Latitude, Longitude = position.Longitude });
            }

            var polyline = new MapPolyline();
            polyline.StrokeColor = Color.FromArgb(128, 255, 0, 0);
            polyline.StrokeThickness = 5;
            polyline.Path = new Geopath(coordinates);
            nativeMap.MapElements.Add(polyline);
        }
    }
}

我还读到需要一个密钥,所以也许我没有好好地使用这个密钥..我试过UWP Public Key和WinPhone8.X以及之前的Key,但也没有成功..

有人有想法吗?这部分在我的应用程序中是一个非常大的问题..

提前感谢!

1 个答案:

答案 0 :(得分:0)

经过很长一段时间,我发现为什么它没有用......

如果您像我一样,如果您使用 Google Direction API 进行HttpRequest,那么结果将在{{1 }}

由于OnElementChanged()不是formsMap.RouteCoordinates为空,因此会引发null ..

这是好的 Catastrophic failure (Exception from HRESULT: 0x8000FFFF (E_UNEXPECTED)) 用于PolyLine 使用

CustomMapRenderer