Подтвердить что ты не робот

Не удалось загрузить карту. Ошибка при обращении к серверам 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). Эта процедура повторялась несколько раз, восстанавливая ключ, но с тем же результатом.

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

4b9b3361

Ответ 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 это сработало!

Итак, для тех, кто приходит сюда, проверьте это тоже!

Ответ 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. Инструкции по поиску вашего отладочного ключа можно найти здесь.