Xamarin.android 如何将Google Maps v2 API与MVVMCross一起使用

Xamarin.android 如何将Google Maps v2 API与MVVMCross一起使用,xamarin.android,mvvmcross,Xamarin.android,Mvvmcross,我试图让Google Maps v2 API与MvvmCross v2(vNext)一起工作,但遇到了一些问题 我使用谷歌地图和MvvmCross的例子有一个从MvxBindingMapActivityView继承的视图。问题是,它使用的是Google Maps v1 API中的MapView,但该API已被弃用,并且Google不再颁发许可证密钥 我有一些代码改编自Xamarin Google Maps v2示例,非常有用: 但我不明白如何让MvvmCross v2工作。它还使用片段,我不确

我试图让Google Maps v2 API与MvvmCross v2(vNext)一起工作,但遇到了一些问题

我使用谷歌地图和MvvmCross的例子有一个从MvxBindingMapActivityView继承的视图。问题是,它使用的是Google Maps v1 API中的MapView,但该API已被弃用,并且Google不再颁发许可证密钥

我有一些代码改编自Xamarin Google Maps v2示例,非常有用:

但我不明白如何让MvvmCross v2工作。它还使用片段,我不确定当前版本的MvvmCross是否支持这一点

在MvvmCross框架之外,我可以通过从MvvmCross视图中激发一个意图来让我的Google Maps v2活动正常工作,这绝对是一个选项,但我想知道MvvmCross内部是否有对Google Maps v2的支持,或者所涉及的黑客行为是否会带来更多麻烦

谢谢

Matthew

v1(
master
)和v2(
vNext
)MvvmCross中的地图代码都依赖于Google地图v1 API,因此不再是新应用程序的选项

同时,
master
vNext
也牢牢扎根于Android v1和v2,因此不包含任何片段支持

所以你对形势的分析是正确的


使用Google Maps v2开发的一些选项包括:

  • 在应用程序中为需要新样式映射的页面/选项卡添加非Mvvm活动

  • 尝试实施
    ExFragmentActivity
    ——无论是否支持数据绑定

    要做到这一点,首先需要从Android的
    FragmentActivity
    类继承,然后需要提供一些额外的方法和属性。更多关于这方面的信息,请访问

    这样做需要大量的剪切和粘贴,但我认为让
    ExFragmentActivity
    工作到非数据绑定级别应该很简单

    进一步说,为了使数据绑定也能正常工作,您可能会发现需要调整绑定/膨胀代码,即
    LayoutInflater
    周围的代码。FragmentManager与父FragmentActivity挂钩的方式可能需要调整。很抱歉,我没有更多关于如何做到这一点的细节-我认为这就是
    hackery
    和一些实验可能涉及的地方

  • v3将拥有完整的片段支持——因此,切换到v3(当它发布时)并使用片段是未来支持的一个选项。但是,从旧版本到v3的更改非常大—因此,现在可能无法选择这样做—这取决于您在项目中的位置


  • 非常有帮助,非常感谢。很高兴听到这将在v3中修复。在我们的情况下,在项目后期切换到v3不是一个选项,因此我认为我们可能会选择选项1作为完成功能的最快途径:)干杯,Matthew@Stuart,你有什么想法吗