Не удалось загрузить карту. Ошибка при обращении к серверам 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
). Эта процедура повторялась несколько раз, восстанавливая ключ, но с тем же результатом.
Может ли кто-нибудь помочь с этим или предложить что-нибудь еще, что я мог бы попробовать? Любая помощь будет принята с благодарностью!
Ответы
Ответ 1
Найти его в конце концов, после отключения WiFi на устройстве, которое я использовал. Кажется, что при отладке через WiFi вам также нужен
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
в манифесте. Не знаю, было ли это всего лишь мое дело или это вообще, но я думаю, что это должно быть в документации где-то (это не так).
Итак, если вы читаете это и имеете схожие проблемы, попробуйте либо отключить WiFi, либо добавить вышеупомянутое разрешение вместе с другими.
Ответ 2
Simple.
Если вы уверены, что ключ API прав, и эта ошибка все еще возникает Logcat,
затем попробуйте следующее:
- Удалите приложение с устройства.
- Очистить проект
- И снова запустите устройство
Теперь карта должна отображаться на устройстве.... это сработало для меня.. приветствия:)
Ответ 3
Убедитесь, что вы внимательно следуете инструкциям в документации, найденной по адресу:
https://developers.google.com/maps/documentation/android/start#obtain_a_google_maps_api_key
Начиная с нового ADT, вы увидите сообщение об ошибке в средстве просмотра logcat, которое дает вам явные инструкции, например, куда идти, что нужно включить и какие данные вам нужно вставить в андроид-отпечаток и детали приложения. См. Ниже;
![enter image description here]()
Несколько Гоча;
-
Включить ОБА API Android Google Maps v2 И API разработчика Google Play для Android в консоли разработчика! Это меня достало:)
-
Убедитесь, что вы используете правильное хранилище ключей, чтобы найти хэш SHA1
(это можно найти, перейдя в
window- > preferences- > android- > build и ищите SHA1). Это будет отличаться от вашего производственного хранилища! В противном случае вы можете использовать keytool -list -v -keystore YOURKEYSTORE.keystore -alias YOURALIAS для просмотра SHA1
-
Добавьте свои элементы ВНУТРЕННЯЯ ваши теги
-
Добавьте свои элементы INSIDE тег <.manifest > (над тегом)
Ответ 4
Это разрешение разрешило проблему
<uses-permission android:name="com.google.android.providers.gsf.permission.READ_GSERVICES"/>
Ответ 5
<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
Ответ 6
Я столкнулся с той же проблемой и обнаружил, что этот набор разрешений работает.
<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" />
Ответ 7
Я думаю, что это проблема вашего API-ключа.
Попробуйте проект Android Sample для карт (сервис Google Play) из нового проекта.
и добавьте ключ API в карты AndroidManifest.xml.
Если он не работает, это будет проблемой API-ключа.
Ответ 8
Просто потратьте несколько разочаровывающих часов на эту же самую проблему.
пытался запустить приложение mapdemo из Google. Сгенерированные новые ключи и т.д. Все равно не будут работать.
Простым решением, как описано выше, было удаление приложения из планшета и повторное выполнение для eclipse. Проблема исчезла.
В Eclipse: окно, настройки, Android, сборка, отпечаток SHA1 из хранилища отладки - это необходимое вам значение (это соответствует документированному способу Google с использованием Keytool из командной строки).
Ответ 9
Ответ на мою аналогичную проблему - добавить:
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
Ответ 10
Убедитесь, что включен "Google Maps Android API v2",
в консоли Google API, Сервисы (см. снимок экрана ниже.
Если он не включен, вы не получите сообщение об ошибке, когда сообщение отключено
хотя вы ввели ключ SHA1.
Снимок экрана
Ответ 11
В моем решении использовался правильный файл
в моем случае я использовал debug.keystore в C:\Users \.android для генерации SH1 KEY
после try meny times, найденный файл anoter в 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 key сайт
Все снова работают
Ответ 12
просто чтобы сказать, я был уверен, что все сделал хорошо, но, наконец, я заметил, что имя пакета в проекте не совпадает с именем, объявленным в AndroidManifest.xml, так что это не то же самое, что в Google Консоль API.
Угадайте, что, я изменил его и... tadaa это сработало!
Итак, для тех, кто приходит сюда, проверьте это тоже!
Ответ 13
Убедитесь, что у вас подписан apk с правой клавишей
http://developer.android.com/tools/publishing/app-signing.html
Ответ 14
Я нашел новое решение, которое было моей глупой ошибкой.
Возможно, вы изменили 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
Отметьте Консоль API Google
Ответ 15
Я решил эту проблему, я надеюсь, что люди, которые найдут ту же проблему со мной (надеюсь, никто другой никогда не совершит ту же ошибку) найдут это полезным
Моя причина была сделана ошибкой, когда я создал проект, имя пакета было неправильным, тогда я изменил имя пакета проекта, это создаст 2 приложения с тем же именем, но с другим именем пакета. отсюда карты больше не работали. то даже если я изменил ключ google api на стороне сервера, он все равно не будет работать.
решение:
попробуйте сначала удалить оба приложения, затем очистите решение. и карта снова появится.
Ответ 16
Проведя несколько часов и следуя каждому контенту в stackoverflow, я заставил его работать, пробовав последнее.
Я хотел, чтобы моя Карта отображалась в другом действии, которое я называю mapActivity не mainActivity. поэтому, когда я создал ключ sh1 в консоли Google api, я набрал имя пакета для моей mapActivity.
!! НО всегда должно быть имя пакета основного действия, даже если вы не показываете карту там, поэтому = packagename.appname
от mainactivity
Ответ 17
Убедитесь, что вы используете отпечаток отладочного сертификата, а не отпечаток отпечатка в Google Developers Console. Инструкции по поиску вашего отладочного ключа можно найти здесь.