Xamarin 地图不在模拟中显示地图

Xamarin maps don't show map in simulation

我正在关注一本书,我的应用确实导航到我创建的地图页面,它显示了每本书的预期位置,但它没有在背景中显示地图。结果,地图上的 +/- zomm 按钮也没有任何作用。

我的XAML

   <ContentPage.Content>
        <Grid>
            <Grid.RowDefinitions>
                <RowDefinition Height="4*" />
                <RowDefinition Height="Auto" />
                <RowDefinition Height="1*" />
            </Grid.RowDefinitions>
            <maps:Map x:Name="map" Grid.RowSpan="3" />
            <BoxView Grid.Row="1" BackgroundColor="White"
                Opacity=".8" />
            <StackLayout Padding="10" Grid.Row="1">
                <Label x:Name="title"
                    HorizontalOptions="Center" />
                <Label x:Name="date"
                    HorizontalOptions="Center" />
                <Label x:Name="rating"
                    HorizontalOptions="Center" />
                <Label x:Name="notes"
                    HorizontalOptions="Center" />
            </StackLayout>
        </Grid>
    </ContentPage.Content>

我的任何 AndroidMenifest.xml 文件是

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android" android:versionCode="1" android:versionName="1.0" package="com.companyname.triplog2">
    <uses-sdk android:minSdkVersion="21" android:targetSdkVersion="29" />
    <application android:label="TripLog2.Android" android:theme="@style/MainTheme">
    <meta-data
      android:name="com.google.android.maps.v2.API_KEY"
      android:value="YOUR-MAPS-API-KEY-HERE" />
  </application>
    <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
</manifest>

这是我的地图屏幕的样子:

我不知道实际设备的结果是什么(我还没有部署它)但我希望它在模拟中工作。

所以我已经完成了 google 地图等的初始化(部分地图配置如概述 here)但关键部分是:

<meta-data
  android:name="com.google.android.maps.v2.API_KEY"
  android:value="YOUR-MAPS-API-KEY-HERE" />

我需要为 YOUR-MAPS-API-KEY-HERE 生成我自己的值。

本文已涵盖here,但这篇文章的日期是 2018 年 6 月 25 日(现在是 2020 年 6 月 11 日),因此一些屏幕截图并不完全相同,但您会明白的。

但是,如果您只是想快速查看 google 地图的运行情况而不担心太多的安全性(出于学习目的),您可以跳过 keytool 部分并跳转到 Creating an API Project.

基本上转到 Google Developers Console API & Services Dashboard 并按照屏幕截图进行操作。

当您创建 API 密钥凭据时,基本上您会获得需要为 YOUR-MAPS-API-KEY-HERE 传递的密钥。剩下的步骤是限制它的安全性。

此处是可用设置的最终屏幕截图。

有关完整详细信息,请参阅文章,这是开始的最低限度,并不包含所有详细信息。

*** 更新 ***

如果确实需要使用keytool生成SHA1密钥,也很简单。

启动命令行,它将在默认位置 c:\windows\system32).

启动

键入 keytool 并输入,它应该是一个可识别的命令(您会得到它的帮助)。

下一个运行实际命令:

keytool.exe -list -v -keystore "C:\Users\[YOUR_LOGIN]\AppData\Local\Xamarin\Mono for Android\debug.keystore" -alias androiddebugkey -storepass android -keypass android

用您在 windows 中的实际用户名替换上面的 [YOUR_LOGIN]。它将生成所有您可以提供的完整信息 security/permissions(主要是您只需要 SHA1 密钥)