Android: Карты Google не отображаются

Я пытаюсь получить карту Google для отображения. Я вижу фон (светло-серый фон, маленькие плитки, логотип Google в левом нижнем углу), поэтому я знаю, что я близко. Тем не менее, карта не отображается. В LogCat я вижу это сообщение, повторяющееся снова и снова:

05-14 13: 28: 17.926: W/System.err(27458): atroid_maps_conflict_avoidance.com.google.googlenav.datarequest.DataRequestDispatcher $ DispatcherServer.run(DataRequestDispatcher.java:1702)

Я использую Google maps api 2 с привязанным телефоном для тестирования под управлением 2.3.4.

Кто-нибудь знает, что может быть причиной этого? Спасибо!

package com.example.maptest;
import android.os.Bundle;
import com.google.android.maps.MapActivity; 
import com.google.android.maps.MapController; 
import com.google.android.maps.MapView;

public class MyMapActivity extends MapActivity {   

  private MapView mapView;   
  private MapController mapController;

   @Override   public void onCreate(Bundle savedInstanceState) {
     super.onCreate(savedInstanceState);
     setContentView(R.layout.map_layout);
     mapView = (MapView)findViewById(R.id.map_view);
   }

   @Override   
   protected boolean isRouteDisplayed() {
     return false;   
   }

 }

AndroidManifest.xml

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.example.maptest"
    android:versionCode="1"
    android:versionName="1.0" >

    <permission android:name="com.example.maptest.permission.MAPS_RECEIVE" android:protectionLevel="signature"/>
    <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
    <uses-permission android:name="com.example.maptest.permission.MAPS_RECEIVE"/>
    <uses-permission android:name="android.permission.INTERNET" />
    <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"/>

    <uses-sdk
        android:minSdkVersion="8"
        android:targetSdkVersion="17" />

    <application
        android:allowBackup="true"
        android:icon="@drawable/ic_launcher"
        android:label="@string/app_name"
        android:theme="@style/AppTheme" >

        <uses-library android:required="true" android:name="com.google.android.maps" />

        <activity
            android:name="com.example.maptest.MyMapActivity"
            android:label="@string/app_name" >
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />

                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>

        <activity
             android:name=".MainActivity" >
             </activity>

        <meta-data
            android:name="com.google.android.maps.v2.API_KEY"
            android:value="xxxxxxxxxxxxxxxxxxxx"/> 

    </application>

</manifest>

Ответ 1

Эта проблема обычно связана с ключом API карты, используемым для подписывания манифеста. Взгляните на этот пост и этот, который описывает ту же самую ошибку, которую вы испытываете. В обоих случаях это связано с тем, что используемый им ключ API был создан с неправильным keystore. Вам нужно убедиться, что вы используете хранилище отладки при создании ключа API на консоли Google API, если вы собираетесь тестировать его из eclipse.

Ответ 2

В основном вы смешиваете устаревший API Android v1 с новым API v2.

Самый простой способ миграции - удалить все связанные с v1 коды и начать с нуля, следуя этой ссылке: https://developers.google.com/maps/documentation/android/start

Ответ 3

Если у вас есть несколько пакетов в приложении, остерегайтесь при создании API key, вы должны использовать имя пакета, включенное в верх файла android mainfest.xml

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    **package="com.xxx.xxx"**
    android:versionCode="1"
    android:versionName="1.0" > 

Ответ 4

ну, на самом деле я прожил эту проблему, и это сходит с ума. после того, как я нашел решение. очень просто:

1- в вашем проекте google_maps_api.xml просто проверьте ссылку на веб-сайт для имени вашего пакета, если ваше имя пакета существует и исправлено. перейдите на страницу и получите ключ

Чтобы получить один, перейдите по этой ссылке, следуйте указаниям и нажмите "Создать", в конце:

https://console.developers.google.com/flows/enableapi?apiid=maps_android_backend&keyType=CLIENT_SIDE_ANDROID&r=...

2- просто создайте новый проект активности gooogle maps, получите код SHA-1.

Не забывайте, что код SHA-1 такой же в вашем другом проекте, но веб-ссылка уникальна для каждой вашей программы.

Ответ 5

перейдите в консоль разработки, чтобы отобразить api для вашего устройства, а затем скопируйте свой ключ и вставьте значения → google_maps_api.xml. Оно работает Используйте Android-ключ (автоматически созданный службой google), если на устройствах Android.

Ответ 6

После нескольких дней борьбы я нашел проблему. В моем манифесте у меня было значение ключа, хранящееся в XML файле, и оно не работало. Теперь у меня есть

<meta-data
android:name="com.google.android.geo.API_KEY"
android:value="AIzxxxxxxxxxxxxxxxxxxxxxxxkey" />    and it works.

Только что удалил XML файл... Надеюсь, это поможет!

Ответ 7

У меня была та же проблема. Проблема была в моем файле манифеста. Проверьте, нет ли ключа Google Maps, который вы сохранили в файле STRING.xml и google maps в google_maps_api.xml, не имеет одинакового имени.

Ответ 8

Одна из наиболее вероятных причин этого заключается в том, что вы не добавили ключ API в файл манифеста проекта. Простейший способ это исправить - перейти в файл google_maps_api.xml, скопировать ссылку в файл и вставить ее в браузер. Нажмите на кнопку "Создать" в ссылке, скопируйте генерируемый после этого ключ api и вставьте его в файл AndroidManifest.xml вместо "Your Api Key", который находится внутри тега метаданных, скомпилируйте проект, который будет исправить проблему.

Ответ 9

Возможно, это связано с тем, что из-за ключа API Google необходимо поместить файл google_maps_api.xml в папку значений и вставить в него правильный ключ API. а также вы должны поместить этот код в файл AndroidManifest.xml

 <application>
 <meta-data
        android:name="com.google.android.geo.API_KEY"
        android:value="YOUR_API_KEY" />

 </application>

Ответ 10

Если над всеми ответами не работают вообще. Затем используйте другой эмулятор. Это сработало для меня.