2013-03-25 50 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

相關問題