Не удалось загрузить карту. Ошибка при обращении к серверам Google с помощью android google maps api v2

Я пытался использовать Google Map в своем приложении для Android, используя API v2 за последние два дня, без каких-либо успехов. Все, что я получаю каждый раз, – это

Google Maps Android API(16603): Failed to load map. Error contacting Google servers. This is probably an authentication issue (but could be due to network errors).

Я выполнил руководство по настройке Google ( https://developers.google.com/maps/documentation/android/start ), несколько раз пытался использовать разные проекты в разных рабочих областях, пробовал разные учетные записи Google, используя различные ответы и предложения здесь, в StackOverflow , Но безрезультатно.

Я использую Eclipse 4.2.2 с Android SDK Tools 22.01, и у меня установлены сервисы Google Play (версия 7), также я импортировал google-play-services_lib в свое рабочее пространство и добавил ссылку на мой проект для Android.

Вот мой код:

AndroidManifest.xml:

 <?xml version="1.0" encoding="utf-8"?> <manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.example.googlemapdemo" android:versionCode="1" android:versionName="1.0" > <uses-sdk android:minSdkVersion="8" android:targetSdkVersion="17" /> <permission android:name="com.example.googlemapdemo.permission.MAPS_RECEIVE" android:protectionLevel="signature" /> <uses-permission android:name="com.example.googlemapdemo.permission.MAPS_RECEIVE"/> <uses-permission android:name="android.permission.INTERNET" /> <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" /> <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /> <uses-permission android:name="com.google.android.providers.gsf.permission.READ_GSERVICES" /> <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" /> <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" /> <uses-feature android:glEsVersion="0x00020000" android:required="true"/> <application android:allowBackup="true" android:icon="@drawable/ic_launcher" android:label="@string/app_name" android:theme="@style/AppTheme" > <activity android:name="com.example.googlemapdemo.MainActivity" android:label="@string/app_name" > <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> </activity> <meta-data android:name="com.google.android.maps.v2.API_KEY" android:value="my_api_key" /> </application> </manifest> 

activity_main.xml:

 <?xml version="1.0" encoding="utf-8"?> <fragment xmlns:android="http://schemas.android.com/apk/res/android" xmlns:map="http://schemas.android.com/apk/res-auto" android:id="@+id/the_map" android:layout_width="match_parent" android:layout_height="match_parent" android:name="com.google.android.gms.maps.SupportMapFragment" /> 

MainActivity.java

 package com.example.googlemapdemo; import android.os.Bundle; import android.support.v4.app.FragmentActivity; import android.view.Menu; public class MainActivity extends FragmentActivity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); } @Override public boolean onCreateOptionsMenu(Menu menu) { // Inflate the menu; this adds items to the action bar if it is present. getMenuInflater().inflate(R.menu.main, menu); return true; } } 

Также я создал проект API на https://code.google.com/apis/console/, где я включил службу Google Maps Android API v2 . Затем я получил свой отпечаток сертификата отладки SHA1, используя

 keytool -list -v -keystore "C:\Users\my_user_name\.android\debug.keystore" -alias androiddebugkey -storepass android -keypass android 

И ввел это имя и имя пакета в консоли API, получил ключ API и поместил его в манифест (где находится my_api_key ). Эта процедура я повторял несколько раз, восстанавливая ключ, но с тем же результатом.

Может ли кто-нибудь помочь с этим или предложить что-нибудь еще, что я мог бы попробовать? Любая помощь будет оценена!

Solutions Collecting From Web of "Не удалось загрузить карту. Ошибка при обращении к серверам Google с помощью android google maps api v2"

Просто.

Если вы уверены, что ключ API прав, и эта ошибка все еще возникает Logcat, попробуйте это:

  1. Удалите приложение с устройства.
  2. Очистить проект
  3. И снова запустите устройство

Карта должна теперь отображаться на устройстве …. это сработало для меня .. ура 🙂

Нашел его в конце концов, отключив WiFi на устройстве, которое я использовал. Кажется, что при отладке через Wi-Fi вам также потребуется

 <uses-permission android:name="android.permission.ACCESS_WIFI_STATE" /> 

В манифесте. Не знаю, было ли это всего лишь мое дело или это общая вещь, но я думаю, что это должно быть в документации где-то (это не так).

Поэтому, если вы читаете это и имеете схожие проблемы, попробуйте либо отключить Wi-Fi, либо добавить вышеупомянутое разрешение вместе с другими.

Обязательно следуйте инструкциям в документации, найденной по адресу:

https://developers.google.com/maps/documentation/android/start#obtain_a_google_maps_api_key

Начиная с нового ADT вы должны увидеть сообщение об ошибке в средстве просмотра logcat, которое дает вам явные инструкции, например, куда идти, что включать и какие данные вам нужно вставить в андроид-отпечаток пальца и информацию о приложении. Смотри ниже;

Введите описание изображения здесь

Несколько Гоча;

  1. Включите ОБА Android API Android v2 и API разработчика Google Play для Android в консоли разработчика! Это меня достало 🙂

  2. Убедитесь, что вы используете правильное хранилище ключей, чтобы найти хэш SHA1 (это можно найти, перейдя в window-> preferences-> android-> build и ищите SHA1). Это будет отличаться от вашего хранилища ключей! В противном случае вы можете использовать keytool -list -v -keystore YOURKEYSTORE.keystore -alias YOURALIAS для просмотра SHA1

  3. Добавьте свои элементы в свои теги

  4. Добавьте свои элементы ВНУТРИ тега <.manifest> (над тегом)

Это разрешение разрешило проблему

 <uses-permission android:name="com.google.android.providers.gsf.permission.READ_GSERVICES"/> 
 <meta-data android:name="com.google.android.maps.v2.API_KEY" android:value="my_api_key" /> 

Android: value = "my_api_key" должен быть фактическим ключом, который вы получаете с https://code.google.com/apis/console

Я столкнулся с той же проблемой и обнаружил, что этот набор разрешений работает.

 <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" /> <uses-permission android:name="android.permission.INTERNET" /> <uses-permission android:name="com.google.android.providers.gsf.permission.READ_GSERVICES" /> 

Я думаю, что это проблема вашего API-ключа.

Попробуйте проект Android Sample для карт (сервис Google Play) из нового проекта.

И добавьте ключ API в файлы AndroidManifest.xml.

Если он не работает, это будет проблемой API-ключа.

Просто потратьте несколько разочаровывающих часов на эту ту же самую проблему.

Пытался запустить приложение mapdemo из Google. Сгенерированные новые ключи и т. Д. Все равно не будут работать.

Простым решением, описанным выше, было удаление приложения из планшета и повторное выполнение для eclipse. Проблема исчезла.

В Eclipse: Окно, настройки, Android, сборка, отпечаток SHA1 из хранилища отладки – это необходимое вам значение (это соответствует документированному способу Google, используя Keytool из командной строки).

Ответ на мою аналогичную проблему – добавить:

 <uses-permission android:name="android.permission.ACCESS_WIFI_STATE" /> 

Убедитесь, что «Google Maps Android API v2» включен в консоли Google API, «Службы» (см. Снимок экрана ниже. Если он не включен, вы не получите сообщение о том, что служба отключена, хотя вы ввели ключ SHA1.

Скриншот

Просто я был уверен, что все сделал хорошо, но я, наконец, заметил, что имя пакета в проекте не совпадает с именем, объявленным в AndroidManifest.xml, так что это не то же самое, что и в консоли Google API.

Угадайте, что, я изменил его и … tadaa это сработало!

Так что, кто приходит сюда, проверьте это тоже!

Мое решение было использовать правильный файл

В моем случае я использовал debug.keystore в C: \ Users \ .android для генерации ключа SH1

После try meny times, найденный файл анотера в C: \ Users \\ Downloads \ adt-bundle-windows-x86_64 \ adt-bundle-windows \ sdk.android использовать его, для генерации ключа SH1

И затем скопируйте 45:B5:E4:6F:36:AD:0A:98:94:B4:02:66:2B:12:17:F2:56:26:A0:E0 обозначает ключевой сайт api

Все снова работают

Убедитесь, что у вас подписан apk с правой клавишей

http://developer.android.com/tools/publishing/app-signing.html

Я нашел новое решение, которое было моей глупой ошибкой.

Можете ли вы изменить application package name после интеграции с Google Map.

Один отпечаток сертификата SHA1 и имя пакета (разделенные точкой с запятой) на строку. Пример:

 45:B5:E4:6F:36:AD:0A:98:94:B4:02:66:2B:12:17:F2:56:26:A0:E0;com.example 

Проверьте консоль Google API

Я решил эту проблему, я надеюсь, что люди, которые найдут ту же проблему со мной (надеюсь, никто другой никогда не совершит ту же ошибку) найдут это полезным

Моя причина была я ошибся, когда я создал проект, имя пакета было неправильным, тогда я изменил имя пакета проекта, это создаст 2 приложения с тем же именем, но с другим именем пакета. Отсюда карты больше не работали. То даже если я изменил ключ google api на стороне сервера, он все равно не будет работать.

Решение: сначала попробуйте удалить оба приложения, затем очистите решение. И карта снова появляется.

Проведя несколько часов и следуя каждому контенту в stackoverflow, я заставил его работать, пробовав последнее.

Я хотел, чтобы моя Карта отображалась в другом действии, которое я называю mapActivity не mainActivity. Поэтому, когда я создал ключ sh1 в консоли Google api, я набрал имя пакета для моей mapActivity.

!! НО всегда должно быть имя пакета основного действия, даже если вы не отобразите карту там, поэтому = packagename.appname из mainactivity

Убедитесь, что вы используете отпечаток пальца отладочного сертификата, а не отпечаток отпечатка в Google Developers Console. Инструкции по поиску вашего отладочного ключа можно найти здесь .