Получение пустой карты Google в V2

Я использую карту Google V2 в своем проекте, я создаю экземпляр карты в классе базового адаптера (настройка в списке),

Файл макета:

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent" >

<fragment
    android:id="@+id/map"
    android:name="com.google.android.gms.maps.MapFragment"
    android:layout_width="fill_parent"
    android:layout_height="500dp"
    android:layout_margin="10dp" />

Java code:

private void setUpMap()
{
    // Do a null check to confirm that we have not already instantiated the map.
    if (ViewHolder.mMap == null)
    {


        android.app.FragmentManager fm = ((Activity) context).getFragmentManager();

        // Try to obtain the map from the SupportMapFragment.
        ViewHolder.mMap = ((MapFragment) fm.findFragmentById(R.id.map)).getMap();

        //=======clear old marker====
        ViewHolder.mMap.clear();

        // Check if we were successful in obtaining the map.

        if (ViewHolder.mMap != null)
        {
            ViewHolder.mMap.setOnMarkerClickListener(new GoogleMap.OnMarkerClickListener()
            {
                @Override
                public boolean onMarkerClick(com.google.android.gms.maps.model.Marker marker)
                {
                    marker.showInfoWindow();
                    return true;
                }
            });
        }
        else
            Toast.makeText(context, "Unable to create Maps", Toast.LENGTH_SHORT).show();
    }
}

У меня есть все известные разрешения для карты.

    <permission android:name="com.the.app.rr.permission.MAPS_RECEIVE"  
android:protectionLevel="signature" />

<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
<uses-feature
    android:glEsVersion="0x00020000"
    android:required="true" />
    <meta-data
        android:name="com.google.android.maps.v2.API_KEY"
        android:value="******_n3wx2Ga-6lBLpD1v56SXs3IIxEqyKw" />
    <meta-data
        android:name="com.google.android.gms.version"
        android:value="@integer/google_play_services_version" />

Я работаю над этим последние два дня, и все проверил, у меня ничего не получилось..

Логи получаем от Google.

1. I/Google Maps Android API(26592): версия пакета сервисов Google Play: 5089038
2. Не удалось разрешить Lcom/google/android/gms/location/ внутренняя/ParcelableGeofence; интерфейс 4023 'Lglm;'
3. Не удалось найти класс 'com.google.android.gms.location.internal.ParcelableGeofence', на который ссылается метод gls.a
4. Не удалось загрузить карту. Ошибка связи с серверами Google. Вероятно, это проблема аутентификации (но это может быть связано с сетевыми ошибками).

Кто-нибудь может помочь, пожалуйста?


comment
Вы уверены, что ваш ключ API верен? Как вы создали свой ключ API?   -  person Burak    schedule 17.09.2014
comment
@Burak Я выполнил все шаги, указанные на сайте разработчиков. и для проверки счетчика я создал второй проект на консоли, но этот ключ также не работал.   -  person Ankit    schedule 17.09.2014
comment
Вы использовали keytool.exe в cmd для получения ключа SHA1?   -  person Burak    schedule 17.09.2014


Ответы (1)


  • Вы звоните ViewHolder.mMap.clear() до того, как проверите ViewHolder.mMap != null

  • Вы звоните setUpMap из onCreate? Если да, я бы попытался переместить его в onResume, чтобы обработка карты выполнялась на более позднем этапе жизненного цикла.

  • В случае ViewHolder.mMap == null я бы позвонил MapsInitializer.initialize(getActivity()), чтобы убедиться, что инициализация GoogleMap запущена. Это не обязательно, но может помочь.

  • Я сталкивался с этой проблемой раньше и понял, что это связано с ключом API. Мне пришлось сгенерировать новый ключ Android, используя хранилище ключей отладки на моем локальном компьютере, так как Студия Android использует его для сборки. В моем случае мне пришлось получить SHA1 от:

    keytool -list -v -keystore %HOMEPATH%\.android\debug.keystore

  • Другой потенциальной проблемой является несоответствие между версией библиотеки сервисов Google Play, которую вы используете в своем приложении для Android, и версией APK сервисов Play на устройстве или эмуляторе. Они должны совпадать или, по крайней мере, в вашем приложении должны быть меньше или равны. Узнать версию сервисов Google Play на устройстве или эмуляторе можно через Settings -> Apps -> Downloaded -> Google Play Services. Если эта версия меньше, чем версия библиотеки, которую вы используете в приложении для Android, я бы попробовал библиотеку более старой версии.

Поиск версии сервисов Google Play

person ashoke    schedule 20.09.2014