Образец кода Api V2 Google Map Android не работает

Я попытался использовать образец кода Google Map, прежде чем был предоставлен в Google_Play_SERVICE/SAMPLE, используя все доступные параметры, и он показал ниже Log.

01-14 17: 58: 39.773: E/API Google Maps для Android (13114): авторизация провал.

Он показал мне пустой экран для всех вариантов карты образца.

Теперь я создал новый проект и вот его полный код:

Activity.java

public class MapActivity extends FragmentActivity
{
    private Context context = this;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_map);

        GoogleMap gMap = ((SupportMapFragment)getSupportFragmentManager().findFragmentById(R.id.map)).getMap();

        int result = GooglePlayServicesUtil.isGooglePlayServicesAvailable(context);
        Log.e("Maps", "Result int value::" + result);
        switch (result) {
        case ConnectionResult.SUCCESS:
            Log.e("Maps", "RESULT:: SUCCESS");          
            break;

        case ConnectionResult.DEVELOPER_ERROR:
            Log.e("Maps", "RESULT:: DE");           
            break;

        case ConnectionResult.INTERNAL_ERROR:
            Log.e("Maps", "RESULT:: IE");           
            break;

        case ConnectionResult.INVALID_ACCOUNT:
            Log.e("Maps", "RESULT:: IA");           
            break;

        case ConnectionResult.NETWORK_ERROR:
            Log.e("Maps", "RESULT:: NE");           
            break;

        case ConnectionResult.RESOLUTION_REQUIRED:
            Log.e("Maps", "RESULT:: RR");           
            break;

        case ConnectionResult.SERVICE_DISABLED:
            Log.e("Maps", "RESULT:: SD");           
            break;

        case ConnectionResult.SERVICE_INVALID:
            Log.e("Maps", "RESULT:: SI");           
            break;

        case ConnectionResult.SERVICE_MISSING:
            Log.e("Maps", "RESULT:: SM");           
            break;
        case ConnectionResult.SERVICE_VERSION_UPDATE_REQUIRED:
            Log.e("Maps", "RESULT:: SVUR");         
            break;
        case ConnectionResult.SIGN_IN_REQUIRED:
            Log.e("Maps", "RESULT:: SIR");          
            break;      

        default:
            break;
        }
        gMap.setMapType(GoogleMap.MAP_TYPE_NORMAL);
        gMap.setMyLocationEnabled(true);
        Log.e("Maps", "------EOC-------");
    }
}

activity_map.xml

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

manifest.xml

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

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

    <uses-feature
        android:glEsVersion="0x00020000"
        android:required="true" />

    <permission
        android:name="net.dottech.map.permission.MAPS_RECEIVE"
        android:protectionLevel="signature" />

    <uses-permission android:name="net.dottech.map.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" />

    <application
        android:allowBackup="true"
        android:icon="@drawable/ic_launcher"
        android:label="@string/app_name"
        android:theme="@style/AppTheme" >
        <activity
            android:name="net.dottech.map.MapActivity"
            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="removed" />
    </application>

</manifest>

LOG

01-21 13:09:09.243: E/Maps(449): Result int value::0
01-21 13:09:09.243: E/Maps(449): RESULT:: SUCCESS
01-21 13:09:09.243: E/Maps(449): ------EOC-------
01-21 13:09:09.248: D/LocationManagerService(1852): gps location requested by an application
01-21 13:09:09.253: D/SensorManager(449): registerListener :: handle = 0  name= K3DH 
Acceleration Sensor delay= 20000 Listener= [email protected]
01-21 13:09:09.353: D/(449): Device driver API match
01-21 13:09:09.353: D/(449): Device driver API version: 10
01-21 13:09:09.353: D/(449): User space API version: 10 
01-21 13:09:09.353: D/(449): mali: REVISION=Linux-r2p4-02rel0 BUILD_DATE=Fri May  4 10:32:42 KST 2012
01-21 13:09:12.398: D/Sensors(449): Remain listener = Sending .. normal delay 200ms
01-21 13:09:12.398: I/Sensors(449): sendDelay --- 200000000
01-21 13:09:12.398: I/Sensors(1852): setDelay :: handle = 0   delay = 200000000
01-21 13:09:12.398: D/SensorManager(449): JNI - sendDelay
01-21 16:14:17.835: E/Google Maps Android API(12168): Failed to load map.  Could not contact Google servers.

Снимок экрана

Google Map Android Api V2 Example tried, no success

Это результат, пустой экран с параметрами масштабирования, отсутствие карты в MapView.

Я следил за каждым шагом, упомянутым в: -

1.) Учебник

2.) Google Map Android Api V2

Ответ 1

Пожалуйста, проверьте..

  • проверьте, существует ли в вашем проекте папка "libs", содержащая "android-support-v4.jar".

    "android-support-v4.jar" находится в "/extras/android/compatibility/v4/android-support-v4.jar" в соответствии с вашей "андроид-сдк".

  • Прежде чем запускать проект, вы должны установить свой проект. Настроить целевой объект на "Google API", а не на Android x.x. version: Выберите свой проект и щелкните Project > Properties > Project Build Target в Eclipse и выберите "Google API", а затем запустите проект на своем телефоне. Если вы используете эмулятор, также ДОЛЖЕН установить AVD эмулятора на любые "API Google".

  • Еще раз вам не нужно создавать новый ключ API Карт Google для тестирования вашего проекта. Просто используйте предоставленный по умолчанию ключ API, который отображается как "Ключ для приложений браузера (со ссылками)" в консоли Google API.

  • Наконец, самое главное - добавить сервисы Google Play в качестве проекта библиотеки Android следующим образом:

    Выберите "Файл" > "Импорт" > "Android" > "Существующий код Android в рабочее пространство" и нажмите "Далее". Выберите "Обзор...", введите /extras/google/google _play_services/libproject/google-play-services_lib и нажмите "Готово".

Ответ 2

Я скомпилировал ваш код и получаю карты. Я думаю, что я обнаружил проблему: неверные учетные данные были кэшированы.

При первом запуске вашего кода он использовал неправильные учетные данные. Хотя я их исправил, я все еще получал ошибку "авторизации". Затем я просто удалил приложение, снова запустил его, а затем карты начали работать.

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

Это также объясняет, почему я только получил карты, работающие после запуска моего другого приложения, используя Debug As (не Run As)...

У меня была та же проблема, что и у вас, и у меня были карты, работающие только при запуске приложения на реальном устройстве через приложение "Отладка как Android".

Я новичок в разработке Android. Я не знаю, так ли это, или чего-то не хватает:) Забастовкa >

Ответ 3

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

Вот ссылка , чтобы найти отпечаток вашего отладочного сертификата. Посмотрите раздел "Отображение отпечатка сертификата отладки"

Ответ 4

Пожалуйста, используйте ключ браузера, когда вы загружаете и запускаете образец проекта из Интернета. В этом случае ключ Android не будет работать и будет давать эту ошибку.

"Не удалось связаться с сервером. Ошибка авторизации

Перейдите в свою консоль API и получите свой ключ браузера

Спасибо

Сообщите мне, есть ли у вас какие-либо вопросы относительно Google Maps Api V2

Ответ 5

Пожалуйста, см. уже опубликованный ответ на SO, это определенно поможет вам.

Необходимо импортировать проект из \extras\google\google_play_services\libproject\google-play-services_lib

Обновление:

Make sure your device have Google Play Services apk installed and its version should be > 2

Сообщите мне, если это сработает для вас.

Ответ 6

Я выяснил проблему, связанную с регистрацией сертификата приложения.

Что мы пытались сделать, так это то, что мы подписываем приложение с помощью нашего keystore & alias. Но здесь нам нужно использовать debug.keystore, который уже доступен в SDK.

Ответ 7

В этом случае ключ api не корректен, тогда карта google не показывается, так что следуйте answer.

Сначала поставьте метаданные ниже в файл андроидного манифеста.

 <meta-data
    android:name="com.google.android.gms.version"
        android:value="@integer/google_play_services_version" />
 <meta-data
        android:name="com.google.android.maps.v2.API_KEY"
        android:value="AIzaSyAU9ShujnIg3IDQxtPrafaf7Q1qOvFVdwNmWc4" />

И затем поместите правильный ключ Api в файл манифеста.

Ответ 8

Получил эту проблему, потому что у меня был restriction включен для моего ключа API в Google Консоли.

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

Убедитесь, что для него установлено значение none, а затем повторите попытку