Monodroid Google Maps API v2 - 与Google服务器联系时出错

时间:2013-07-24 15:28:43

标签: android xml google-maps xamarin.android

我正在开发一个MonoDroid项目,似乎无法解决这个问题。我正在尝试使用MapsAndLocationDemo_v2项目,甚至无法在SimpleMapDemo项目上加载地图。我在这个问题上经历了很多SO帖子。

地图加载但是为白色且应用程序输出状态:

[Google Maps Android API] Failed to contact Google servers. Another attempt will be made when connectivity is established.
[Google Maps Android API] Failed to load map. Error contacting Google servers. This is probably an authentication issue (but could be due to network errors).

我按照项目README.md中的说明构建了Google Play客户服务库。

我使用位于以下位置的debug.keystore生成了一个新的Android Google Maps v2 API密钥:

C:\Users\[USERNAME]\AppData\Local\Xamarin\Mono for Android\debug.keystore

并替换项目manifest.xml中的那个,如下所示:

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android" android:versionCode="5" android:versionName="4.0" package="com.xamarin.docs.android.mapsandlocationdemo2">
<uses-sdk android:minSdkVersion="14" android:targetSdkVersion="17" />
<!-- Google Maps for Android v2 requires OpenGL ES v2 -->
<uses-feature android:glEsVersion="0x00020000" android:required="true" />
<!-- We need to be able to download map tiles and access Google Play Services-->
<uses-permission android:name="android.permission.INTERNET" />
<!-- Allow the application to access Google web-based services. -->
<uses-permission ndroid:name="com.google.android.providers.gsf.permission.READ_GSERVICES" />
<!-- Google Maps for Android v2 will cache map tiles on external storage -->
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<!-- Google Maps for Android v2 needs this permission so that it may check the connection state as it must download data -->
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<!-- These are optional, but recommended. They will allow Maps to use the My Location provider. -->
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
<!-- Notice here that we have the package name of our application as a prefix on the permissions. -->
<uses-permission android:name="com.xamarin.docs.android.mapsandlocationdemo2.permission.MAPS_RECEIVE" />
<permission android:name="com.xamarin.docs.android.mapsandlocationdemo2.permission.MAPS_RECEIVE" android:protectionLevel="signature" />
<application android:label="@string/app_name">
    <!-- Put your Google Maps V2 API Key here. This key will not work for you.-->
    <!-- See https://developers.google.com/maps/documentation/android/start#obtaining_an_api_key -->
    <meta-data android:name="com.google.android.maps.v2.API_KEY" android:value="xxxxxxxxxxxxxMY_KEY_HERExxxxxxxxxxxxxxx" />
</application>
</manifest>

enter image description here

我的Android设备正在运行4.0.3。 Google Play服务已在我的设备上安装并保持最新状态。

欢迎任何建议......

2 个答案:

答案 0 :(得分:2)

确保您使用与获取API密钥相同的密钥对应用程序进行了真正的签名。

应用程序包与API密钥请求中的相同。

我已经失去了几个小时的问题,发现应用程序签名有问题。

我手动签名并显示地图。

答案 1 :(得分:0)

如果您的应用使用有效密钥签名,请查看how to check - 否则Google地图将无法正常运行,身份验证将被拒绝或其他此类问题。

同时检查logcat,这可能会打印出这个问题的原因。