MvvmCross与MapFragment

时间:2013-07-03 22:30:35

标签: xamarin google-maps-api-2 mvvmcross

我无法使用Google地图v2片段创建活动。自定义片段工作正常,这只是MapFragment的一个问题。

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent">
<fragment
    class="com.google.android.gms.maps.SupportMapFragment"
    android:id="@+id/mapfragment"
    android:layout_width="match_parent"
    android:layout_height="match_parent" />

这是错误:

mvx:Diagnostic: 36.27 Showing ViewModel TruckWashMapViewModel
[0:] mvx:Diagnostic: 36.27 Showing ViewModel TruckWashMapViewModel
07-03 17:24:51.184 I/mono-stdout(16230): mvx:Diagnostic: 36.27 Showing ViewModel TruckWashMapViewModel
07-03 17:24:51.214 I/Choreographer(16230): Skipped 297 frames!  The application may be doing too much work on its main thread.
Resolved pending breakpoint at 'c:\_Application\BLUBCNMOBL\src\BLUBCNMOBL.Droid\Views\TruckWashMapView.cs:17,1' to OnCreate [0x00001].
[0:] mvx:Diagnostic: 40.71 Loading new ViewModel from Intent with Extras
[0:] mvx:Diagnostic: 40.71 Loading new ViewModel from Intent with Extras
07-03 17:24:55.629 I/mono-stdout(16230): mvx:Diagnostic: 40.71 Loading new ViewModel from Intent with Extras
[0:] 
MvxBind:Error: 42.60 View type not found - fragment
[0:] MvxBind:Error: 42.60 View type not found - fragment
07-03 17:24:57.511 I/mono-stdout(16230): MvxBind:Error: 42.60 View type not found - fragment

通过堆栈跟踪进一步查看,看起来API密钥出错了。但我确实在AndroidManifest.xml中有我的API密钥。

07-05 14:55:02.231 I/MonoDroid(31877): Caused by: java.lang.RuntimeException: API key not found.  Check that <meta-data android:name="com.google.android.maps.v2.API_KEY" android:value="your API key"/> is in the <application> element of AndroidManifest.xml

的AndroidManifest.xml

<application android:icon="@drawable/logo"
                 android:debuggable="true"
                 android:enabled="true"
                 android:persistent="false"
                 android:allowClearUserData="true">
        <meta-data android:name="com.google.android.maps.v2.API_KEY" android:value="xxx" />

3 个答案:

答案 0 :(得分:1)

我应该发布我的整个AndroidManifest.xml。问题是我在清单中有2个Application节点。

答案 1 :(得分:0)

任何片段都会出现此问题吗?或者只是一张地图片段?

您可以使用ViewGroup解决此问题并将片段动态加载到其中吗?

作为参考,片段的N + 1视频包含<fragment>标签 - n = 26 - 这显示片段正在加载并使用nuget包记录3.0.8.1

如果现在已经破坏了所有碎片,那么我认为自3.0.8.1版本以来出现了一些问题 - 在这种情况下报告问题和/或修复项目。

如果此问题特定于您的地图导入,那么我猜您将需要进行更多调试和调查以解决问题。

答案 2 :(得分:0)

如果您使用的是未修改版本的MvvmCross(3.0.8.1),那么您需要使用com.google.android.gms.maps.SupportMapFragment而不是com.google.android.gms.maps.MapFragment

尝试使用它来显示地图片段

<fragment
    class="com.google.android.gms.maps.SupportMapFragment"
    android:id="@+id/mapfragment"
    android:layout_width="match_parent"
    android:layout_height="match_parent" />

我发现了API密钥的类似问题。我是由Google API控制台中的错误设置引起的。实际上有两种服务可供选择“Google Maps Android API v2”和“Google Maps API v2”。您能否在服务标签中验证您实际已激活“Google Maps Android API v2”服务。