Android Google Map API V2 пустой экран

Привет, я недавно следил за учебником Vogella по Google Map API v2. Код похож на его. Но по какой-то причине карта отображается пустой, и logcat также не показывает ошибок. Я тоже следил за этим видео чтобы получить отпечаток пальца SHA1, я помещаю ключ API в файл манифеста. Я использовал хранилище ключей отладки C:UsersUserName - ... androiddebug.keystore, который также является хранилищем ключей отладки по умолчанию, расположенным в Eclipse - > Windows - > Preference - > Android - > Build.

I также сгенерирован новый ключ API, и он по-прежнему не работает.

файл манифеста:

<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.example.barcodelibrary"
    android:versionCode="1"
    android:versionName="1.0" >

    <uses-sdk
        android:minSdkVersion="11"
        android:targetSdkVersion="15" />

    <permission
        android:name="com.example.mapdemo.permission.MAPS_RECEIVE"
        android:protectionLevel="signature" />

    <uses-feature
        android:glEsVersion="0x00020000"
        android:required="true" />
    <uses-feature android:name="android.hardware.camera" />
    <uses-feature android:name="android.hardware.camera.autofocus" />
    <uses-feature android:name="android.hardware.camera.flash" />

    <uses-permission android:name="android.permission.INTERNET"/>
    <uses-permission android:name="android.permission.CAMERA"/>
    <uses-permission android:name="android.permission.INTERNET"/>
    <uses-permission android:name="android.permission.VIBRATE"/>
    <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
    <uses-permission android:name="android.permission.SET_DEBUG_APP"></uses-permission>
    <application
        android:icon="@drawable/ic_launcher"
        android:label="@string/app_name"
        android:theme="@style/AppTheme" >
        <activity
            android:name=".HomeActivity"
            android:label="@string/title_activity_home" >
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />

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

        </activity>
        <activity android:name=".ScanActivity"/>
        <activity android:name=".MapActivity"/>
        <activity android:name=".BarcodeHelper"/>
        <activity android:name=".JsonHelper"/>

        <meta-data
            android:name="com.google.android.maps.v2.API_KEY"
            android:value="my api key" />
    </application>

</manifest>

Это мой файл макета для действия карты:

    <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context=".MapActivity" >

        <fragment
        android:id="@+id/map"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        class="com.google.android.gms.maps.MapFragment" />

</RelativeLayout>

Это моя деятельность на карте:


public class MapActivity extends Activity 
{
    static final LatLng HAMBURG = new LatLng(53.558, 9.927);
    static final LatLng KIEL = new LatLng(53.551, 9.993);
    private GoogleMap map;
    @Override
    protected void onCreate(Bundle savedInstanceState) 
    {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_map);

        map = ((MapFragment) getFragmentManager().findFragmentById(R.id.map))
                .getMap();
            Marker hamburg = map.addMarker(new MarkerOptions().position(HAMBURG)
                .title("Hamburg"));
            Marker kiel = map.addMarker(new MarkerOptions()
                .position(KIEL)
                .title("Kiel")
                .snippet("Kiel is cool")
                .icon(BitmapDescriptorFactory
                    .fromResource(R.drawable.ic_launcher)));
    }

    @Override
    public boolean onCreateOptionsMenu(Menu menu) 
    {
        // Inflate the menu; this adds items to the action bar if it is present.
        getMenuInflater().inflate(R.menu.activity_map, menu);
        return true;
    }
}

Спасибо!

12 ответов


у вас есть несколько проблем с разрешением с манифестом. Во-первых, в следующем вам нужно заменить имя пакета вашим пакетом, вам также нужно как uses-permission

 <permission
        android:name="com.example.mapdemo.permission.MAPS_RECEIVE"
        android:protectionLevel="signature" />

в ваше имя пакета, должно быть --

<permission
          android:name="com.example.barcodelibrary.permission.MAPS_RECEIVE"
          android:protectionLevel="signature"/>
<uses-permission android:name="com.example.barcodelibrary.permission.MAPS_RECEIVE"/>

наконец, вы, кажется, не хватает следующих разрешений от задание разрешений на руководство по началу работы --

<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"/>

для меня оказалось, что я не позволил Google Maps Android API v2. Мы использовали другой API Google Maps, который, как я предполагал, был таким же.


вы должны запустить приложение в amulator со следующей конфигурацией.... 1) Google API (образ системы x86) 2) установите флажок Использовать графический процессор Хоста..


Если это не сработало, следуйте этому

разрешения экрана карты: Привет, я был через этот пустой экран в течение очень долгого времени и опробовал все решения, которые вы можете себе представить.Теперь он решил, и шаги были:

1-пройдите все шаги в этом уроке тщательно.

2-Если пустой экран все тот же, удалите файл хранилища ключей отладки, который существует в c:\Users\youUser.android\debug.keystore

3 - на Eclips IDE перестроить приложение, так что он будет автоматически повторно создать этот файл. 4-на eclips перейдите в окно- > настройки- > android->построить скопируйте свежий сгенерированный SHA1, а затем выполните обычные шаги генерации ключей . 5-запустите на своем реальном устройстве, и я надеюсь, что вы увидите свою карту:)


мне пришлось добавить правильный отпечаток сертификата SHA-1 в консоль разработчика Google.

  1. отображение текущего отпечатка пальца:keytool -list -keystore ~/.android/debug.keystore

  2. скопируйте отпечаток пальца (например,48:6Ф:55:В7:С5:Е4:54:Е1:29:Д5:Е1:Е1:Е2:А8)

  3. добавьте его в свои учетные данные для этого конкретного приложения в Консоль Разработчика Google


установите пользовательский keysote на тот же, что и по умолчанию (Eclipse). И зарегистрируйте ключ API в консоли google, как сказано в документации.


у меня аналогичная проблема с картой. После исправления всех lib и ключевых проблем я просто увидел белый экран с надписью "Google". Проблема была в том, что я поставил MapFragment на ScrollView. После удаления ScrollView все работает нормально. Я вижу карту.


Android Studio: убедитесь, что вы поместили свой ключ в правильную иерархию

enter image description here


большинство людей забывают активировать Google Maps Android API V2 в консоли разработчика, Я активировал его и вуаля, моя карта появилась.


в моем случае это было существующее приложение, которое я клонировал из GitHub и не менял ключ API. Что сработало для меня, так это включить SHA-1 моего сертификата подписи. Следуйте этим краткое руководство чтобы получить отпечаток пальца SHA-1.

затем я попросил главного разработчика добавить мой отпечаток пальца SHA-1 в авторизованные пакеты для его соответствующего ключа API здесь. Затем я сделал сборку снова таким же образом, и это сработало.


мой ответ в другой пост это то, что на самом деле работает для меня, я вставляю сертификат подписи приложения ша-1


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

то, что сработало, заменяет это:

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

этой

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

добавить непосредственно ключ api без строки ressource