如何在MVVMCross中使用Google Maps v2 API

时间:2013-03-25 22:28:42

标签: xamarin.android mvvmcross

我正在尝试使用MvvmCross v2(vNext)处理Google Maps v2 API并遇到一些问题。

我使用MvvmCross使用Google地图的示例有一个继承自MvxBindingMapActivityView的视图。问题在于,它使用了Google Maps v1 API中的MapView,但不推荐使用此API,并且Google不再发布许可证密钥。

我有一些改编自Xamarin Google Maps v2示例的代码,效果很好:

https://github.com/xamarin/monodroid-samples/tree/master/MapsAndLocationDemo_v2

但我不明白如何使用MvvmCross v2。它也使用片段,我不确定当前版本的MvvmCross是否支持它?

我可以通过在MvvmCross视图中触发Intent来使我的Google Maps v2 Activity在MvvmCross框架之外正常工作,这绝对是一个选项,但我想知道MvvmCross中是否有对Google Maps v2的任何支持或者涉及的hackery是否会比它的价值更麻烦。

谢谢!

马修

1 个答案:

答案 0 :(得分:0)

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

与此同时,mastervNext也牢牢扎根于Android v1和v2中 - 因此不包含任何片段支持。

所以你对情况的分析是正确的。


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

  1. 在您的应用中为需要新样式地图的页面/标签添加非Mvvm活动。

  2. 尝试实施ExFragmentActivity - 有或没有数据绑定支持。

    要做到这一点,首先需要从Android的FragmentActivity类继承,然后您需要提供一些其他方法和属性。有关详情,请参见Insert a Monogame view inside MvvmCross monodroid Activity

    这样做有很多剪切和粘贴,但我认为将ExFragmentActivity工作到非数据绑定级别应该是微不足道的。

    为了更进一步 - 让数据绑定也能正常工作 - 您可能会发现需要调整绑定/通胀代码 - LayoutInflater周围的代码。可能需要调整FragmentManager挂钩到父FragmentActivity的方式。对不起,我没有更多有关如何执行此操作的详细信息 - 我认为这是hackery的地方,可能涉及一些实验。

  3. v3将具有完整的Fragment支持 - 因此切换到v3(发布时)和使用片段是未来支持的一种选择。但是,从旧版本到v3的更改非常大 - 所以现在这样做可能不是一个选项 - 取决于您在项目中的位置。