无法将 xamarin.forms.map 控件添加到 Xamarin 表单

Unable to add xamarin.forms.map control to Xamarin Form

我想在我的 android 应用程序中添加地图控件。 为此,我从 Nuget 获得了最新的 xamarin.forms 和 xamarin.forms.maps 包。

我的逻辑背后的代码什么都不做,我的 axml 页面如下所示:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:maps="clr-namespace:Xamarin.Forms.Maps;assembly=Xamarin.Forms.Maps"
    xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
    android:orientation="vertical"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    xmlns:d="http://xamarin.com/schemas/2014/forms/design"
    xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
    mc:Ignorable="d">
        <LinearLayout
            android:orientation="vertical"
            android:minWidth="25px"
            android:minHeight="25px"
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:id="@+id/optionsContainerLinearLayout">
           //Other UI elements
        <maps:Map>
        </maps:Map>
        </LinearLayout>
...
</LinearLayout>

请注意,我在 maps:Map 中没有任何标签,以便将出错的可能性降到最低。请注意,当我直接在下面使用更多属性填充此地图时,代码仍然以相同的方式中断:

<map:Map
        android:minWidth="25px"
        android:minHeight="25px"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:id="@+id/mockMapView">
</map:Map>

当我 运行 这个应用程序时,它在 SetContentView() 上中断并出现错误:

Didn't find class "android.view.Map" on path: DexPathList
[[zip file "/system/framework/org.apache.http.legacy.boot.jar", zip file "/data/app/com.geosolve.pavestate2-fJtHBLcT2gY6AlUrxcOOVg==/base.apk"],
nativeLibraryDirectories=[/data/app/com.geosolve.pavestate2-fJtHBLcT2gY6AlUrxcOOVg==/lib/x86, /data/app/com.geosolve.pavestate2-fJtHBLcT2gY6AlUrxcOOVg==/base.apk!/lib/x86, /system/lib]]

我下载了另一个示例 xamarin 应用程序,运行在我的模拟器上没问题,所以我认为模拟器不是问题所在。 我的 API 密钥也被其他应用程序使用,所以我认为 API 密钥也不是问题所在。

我的 androidManifest.xml 看起来是这样的:

...
    <application android:allowBackup="true" android:icon="@mipmap/icon" android:label="@string/app_name" android:roundIcon="@mipmap/icon" android:supportsRtl="true" android:theme="@style/GeosolveApp">
        <meta-data android:name="com.google.android.maps.v2.API_KEY" android:value="(My API Key)" />
    <meta-data
    android:name="com.google.android.gms.version"
    android:value="@integer/google_play_services_version" />
    </application>
...

任何关于为什么会这样的帮助;不只是像您期望的那样出现?

对于Xamarin.Android,我们通常install the Xamarin.GooglePlayServices.Maps package from NuGet

并在您的 xaml 中添加地图,例如:

声明式 :

<fragment xmlns:android="http://schemas.android.com/apk/res/android"
   xmlns:tools="http://schemas.android.com/tools"
   android:layout_width="match_parent"
   android:layout_height="match_parent"
   android:id="@+id/map"
   class="com.google.android.gms.maps.SupportMapFragment" /> 

以编程方式

var mapFrag = MapFragment.NewInstance();
activity.FragmentManager.BeginTransaction()
                        .Add(Resource.Id.map_container, mapFrag, "map_fragment")
                        .Commit();

你能读的越多Google Maps