如何更新自定义渲染的地图?

时间:2015-08-10 18:01:52

标签: xamarin xamarin.forms

我在Xamarin.Forms.Maps.Map扩展的共享项目中创建了一个CustomMap。

我还为iOS和Android创建了自定义渲染器。问题是:我尝试更新用户与目标相关的位置,因此我需要使用Google的新折线更新该地图。但我不知道如何。

我考虑在我的CustomMap类中创建一个方法,以便在我的渲染器中重写,但渲染器只使用我的CustomMap类作为ExportRenderer类型,该类本身派生自MapRenderer。

如何从CustomMap类控制此更新?从我的共享项目代码那里我可以做CustomMap.Update(new Polylines)

项目结构:

    • 共享项目
      • CustomMap:Xamarin.Forms.Maps.Map
    • iOS项目
      • CustomMapRenderer:Xamarin.Forms.Maps.iOS.MapRenderer
    • Android项目
      • CustomMapRenderer:Xamarin.Forms.Maps.Android.MapRenderer

1 个答案:

答案 0 :(得分:1)

在CustomMap.cs中:

public static BindableProperty TestProperty = BindableProperty.Create(
    propertyName: "Test",
    returnType: typeof(string),
    declaringType: typeof(CustomMap),
    defaultValue: "test",
    defaultBindingMode: BindingMode.OneWay,
    propertyChanged: HandleTestChanged);

public string Test
{
    get { return (string)GetValue(TestProperty); }
    set { SetValue(TestProperty, value); }
}

private static void HandleTestChanged(BindableObject bindable, object oldValue, object newValue)
{
    var customMap = (CustomMap)bindable;
    // do something with new value
}

然后在你的渲染器中:

var customMap = (CustomMap)Element;
var test = customMap.Test;