我正在尝试使用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是否会比它的价值更麻烦。
谢谢!
马修
答案 0 :(得分:0)
v1(master
)和v2(vNext
)MvvmCross中的地图代码都依赖于Google Maps v1 API - 因此不再是新应用的选项。
与此同时,master
和vNext
也牢牢扎根于Android v1和v2中 - 因此不包含任何片段支持。
所以你对情况的分析是正确的。
使用Google Maps v2进行开发的一些选项包括:
在您的应用中为需要新样式地图的页面/标签添加非Mvvm活动。
尝试实施ExFragmentActivity
- 有或没有数据绑定支持。
要做到这一点,首先需要从Android的FragmentActivity
类继承,然后您需要提供一些其他方法和属性。有关详情,请参见Insert a Monogame view inside MvvmCross monodroid Activity。
这样做有很多剪切和粘贴,但我认为将ExFragmentActivity
工作到非数据绑定级别应该是微不足道的。
为了更进一步 - 让数据绑定也能正常工作 - 您可能会发现需要调整绑定/通胀代码 - LayoutInflater
周围的代码。可能需要调整FragmentManager挂钩到父FragmentActivity的方式。对不起,我没有更多有关如何执行此操作的详细信息 - 我认为这是hackery
的地方,可能涉及一些实验。
v3将具有完整的Fragment支持 - 因此切换到v3(发布时)和使用片段是未来支持的一种选择。但是,从旧版本到v3的更改非常大 - 所以现在这样做可能不是一个选项 - 取决于您在项目中的位置。