3

我正在尝试让 Google Maps v2 API 与 MvvmCross v2 (vNext) 一起使用,但遇到了一些问题。

我使用带有 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 或者是否所涉及的黑客行为将比它的价值更麻烦。

谢谢!

马修

4

1 回答 1

0

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

同时,mastervNext牢牢扎根于 Android v1 和 v2 - 所以不包含任何片段支持。

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


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

  1. 在您的应用程序中为需要新样式映射的页面/选项卡添加一个非 Mvvm Activity。

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

    为此,您首先需要从 Android 的FragmentActivity类继承,然后您需要提供一些额外的方法和属性。在 MvvmCross monodroid Activity中插入 Monogame 视图中的更多信息。

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

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

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

于 2013-03-26T05:20:26.807 回答