Google maps 谷歌地图未创建,回调函数从未运行

Google maps 谷歌地图未创建,回调函数从未运行,google-maps,xamarin.android,Google Maps,Xamarin.android,我正在尝试将谷歌地图支持添加到我的android应用程序中。在代码中创建整个应用程序布局时,我还希望在代码中创建map对象。这个类应该处理OnMapReady回调函数 public class MapReader : Java.Lang.Object, IOnMapReadyCallback { private LayoutBuilder layoutBuilder; public MapReader(LayoutBuilder lb) { layoutB

我正在尝试将谷歌地图支持添加到我的android应用程序中。在代码中创建整个应用程序布局时,我还希望在代码中创建map对象。这个类应该处理OnMapReady回调函数

public class MapReader : Java.Lang.Object, IOnMapReadyCallback
{
    private LayoutBuilder layoutBuilder;
    public MapReader(LayoutBuilder lb)
    {
        layoutBuilder = lb;
    }
    public void OnMapReady(GoogleMap googleMap)
    {
        layoutBuilder.OnMapLoaded(googleMap);
    }
}
这是创建布局代码的关键部分

MapView mapView=new MapView(context);
mapView.LayoutParameters = layoutParams;
linearLayout.AddView(mapView);

mapReader = new MapReader(this);
mapView.GetMapAsync(mapReader);
问题是我没有收到任何错误/异常永远不会调用OnMapReady函数,屏幕只是空的。什么可能是错误的,或者如何获得有关此类行为的其他信息?我试着按照这个步骤来做。在“输出”窗口中,我试图找到有帮助的行:

Loaded assembly: /storage/emulated/0/Android/data/AlienChessAndroid.AlienChessAndroid/files/.__override__/Xamarin.GooglePlayServices.Base.dll [External]
Loaded assembly: /storage/emulated/0/Android/data/AlienChessAndroid.AlienChessAndroid/files/.__override__/Xamarin.GooglePlayServices.Basement.dll [External]
Loaded assembly: /storage/emulated/0/Android/data/AlienChessAndroid.AlienChessAndroid/files/.__override__/Xamarin.GooglePlayServices.Maps.dll [External]
输出窗口中有几行看起来不太好,但应用程序正在运行

AOT module 'Mono.Android.dll.so' not found: dlopen failed: library "/data/app/AlienChessAndroid.AlienChessAndroid-1/lib/arm/libaot-Mono.Android.dll.so" not found
AOT module '/storage/emulated/0/Android/data/AlienChessAndroid.AlienChessAndroid/files/.__override__/Xamarin.Android.Support.v4.dll.so' not found: dlopen failed: library "/data/app/AlienChessAndroid.AlienChessAndroid-1/lib/arm/libaot-Xamarin.Android.Support.v4.dll.so" not found
AOT module '/Users/builder/data/lanes/4009/3a62f1ea/source/monodroid/builds/install/mono-armv7/lib/mono/aot-cache/arm/Xamarin.Android.Support.v4.dll.so' not found: dlopen failed: library "/data/app/AlienChessAndroid.AlienChessAndroid-1/lib/arm/libaot-Xamarin.Android.Support.v4.dll.so" not found
这是我的清单文件

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android" package="AlienChessAndroid.AlienChessAndroid" android:versionCode="1" android:versionName="1.0" android:installLocation="preferExternal">
<uses-sdk android:minSdkVersion="22" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="com.google.android.providers.gsf.permission.READ_GSERVICES" />
<uses-permission android:name="android.permission.WAKE_LOCK" />
<application android:label="Alien Chess" android:icon="@drawable/Alien" android:largeHeap="true">
    <meta-data android:name="com.google.android.gms.version" android:value="2" />
    <meta-data android:name="com.google.android.maps.v2.API_KEY" android:value="AIzaSyAmxxxxxxxxxxxxxxxxxxxxxxxxx" />
</application>
读完后我换了行

<meta-data android:name="com.google.android.gms.version" android:value="2" />

为了



没有任何改变。

在您身上,我会尝试在布局axml中创建LinearLayout和MapView(如果可以的话),以确保它是它应该的样子,在调用GetMapAsync时使用它的资源id
FindViewById
,获取地图

映射的设置和调用
getmapsync
应该在
OnStart
OnResume
中完成

创建IOnMapReadyCallback后,您还可以尝试直接添加如下事件处理程序,以查看是否调用它:

mapReader.MapReady += (sender, args) => { };

也可以在最新Android版本的设备上尝试您的代码,也可以在Android 5.x上尝试您的代码,这样您就可以确保在运行时请求Android 6.0引入的权限没有问题。

请确保您的
Google Play服务可用,如果没有,它将显示一个空屏幕。@YorkShen MSFT我更新了帖子,看起来服务可用。
<meta-data android:name="com.google.android.gms.version" android:value="@integer/google_play_services_version" />
mapReader.MapReady += (sender, args) => { };