【问题标题】:How to use Google Maps v2 API with MVVMCross如何在 MVVMCross 中使用 Google Maps v2 API
【发布时间】:2013-03-15 14:20:22
【问题描述】:

我正在尝试让 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。它也使用了fragments,我不确定当前版本的MvvmCross是否支持这个?

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

谢谢!

马修

【问题讨论】:

    标签: xamarin.android mvvmcross


    【解决方案1】:

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

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

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


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

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

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

      为此,您首先需要从 Android 的 FragmentActivity 类继承,然后您需要提供一些额外的方法和属性。在Insert a Monogame view inside MvvmCross monodroid Activity 中了解更多信息。

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

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

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

    【讨论】:

    • 非常有帮助,非常感谢。很高兴听到这将在 v3 中修复。在我们的案例中,不能在项目后期切换到 v3,所以我认为我们可能会选择选项 1 作为完成功能的最快途径 :) 干杯,马修
    • @Stuart,对以下stackoverflow.com/questions/42728757/…的任何想法@
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-02-19
    • 1970-01-01
    • 2013-03-24
    • 2023-04-02
    • 1970-01-01
    相关资源
    最近更新 更多