2013-03-25 88 views
3

我试图让Google Maps v2 API与MvvmCross v2(vNext)一起工作,并遇到一些问题。如何在MVVMCross上使用Google Maps v2 API

我使用带有MvvmCross的Google Maps的例子有一个继承自MvxBindingMapActivityView的视图。麻烦的是,它使用Google Maps v1 API中的MapView,但此API已弃用,Google不再发放许可证密钥。

我有改编自Xamarin谷歌地图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或者涉及的黑客行为是否会比其价值更麻烦。

谢谢!

马修

回答

0

在V1(master)和v2(vNext)的映射代码MvvmCross都依赖于谷歌地图1.0版API - 因此不再是新的应用程序的选项。

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

因此,您对情况的分析是正确的。


与谷歌地图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的变化相当大 - 所以现在做这可能不是一个选项 - 取决于你在项目中的位置。

+0

非常有帮助,非常感谢。很高兴听到这将在v3中得到修复。在我们的案例中,这个项目的最后阶段切换到v3不是一种选择,所以我认为我们可能会选择1作为功能完整的最快途径:) Cheers,Matthew – MisterMat 2013-03-27 15:05:36

+0

@Stuart,关于以下http: //stackoverflow.com/questions/42728757/markerclick-works-but-infowindowclick-does-not-open-viewmodel – hotspring 2017-03-13 15:47:16

相关问题