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
Если над всеми ответами не работают вообще. Затем используйте другой эмулятор. Это сработало для меня.