很长一段时间以来,我一直在努力使用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,但也没有成功..
有人有想法吗?这部分在我的应用程序中是一个非常大的问题..
提前感谢!
答案 0 :(得分:0)
经过很长一段时间,我发现为什么它没有用......
如果您像我一样,如果您使用 Google Direction API 进行HttpRequest
,那么结果将在{{1 }}
由于OnElementChanged()
不是formsMap.RouteCoordinates
但为空,因此会引发null
..
这是好的 Catastrophic failure (Exception from HRESULT: 0x8000FFFF (E_UNEXPECTED))
用于PolyLine 使用
CustomMapRenderer