2016-12-03 3 views
0

Я пробовал и пытался попытаться понять эту проблему. Я искал везде, и я еще не нашел решения. Я понимаю, что в этой теме много форумов, но никто не помог мне придумать решение.Ошибки с API Google в приложении android с использованием MapActivity

Проблема, с которой я сталкиваюсь, заключается в том, что когда я запускаю приложение для Android, в эмуляторе область для карты появляется только с серыми плитками. Я читал онлайн, что проблема, скорее всего, является ключом Google API, но я попытался умножить способ ее генерации (использовал терминал Android Studio для получения SHA1, у меня была студия Android, создающая ссылку на Google, чтобы она автоматически создавала ключ).

Я надеюсь, что кто-то может мне помочь, я довольно отчаянный здесь!

Категория: Мои данные package com.bignerdranch.android.taskmanager;

import android.os.Bundle; 

import com.google.android.maps.MapActivity; 

public class AddLocationMapActivity extends MapActivity { 

    public static final String ADDRESS_RESULT = "address"; 

    @Override 
    protected void onCreate(Bundle bundle) { 
     super.onCreate(bundle); 
     setContentView(R.layout.add_location); 
    } 

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

    @Override 
    protected boolean isLocationDisplayed() { 
     return true; 
    } 

} 

Это расположение:

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

    <TextView 
     android:id="@+id/location_title" 
     .../> 

    <EditText 
     android:id="@+id/task_address" 
     .../> 

    <Button 
     android:id="@+id/map_location_button" 
     .../> 

    <com.google.android.maps.MapView 
     android:id="@+id/map" 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:layout_below="@id/map_location_button" 
     android:layout_above="@+id/use_this_location_button" 
     android:clickable="true" 
     android:apiKey="AIza.................................." /> 

    <Button 
     android:id="@id/use_this_location_button" 
     .../> 

</RelativeLayout> 

Тогда это файл манифеста:

?xml version="1.0" encoding="utf-8"?> 
<manifest xmlns:android="http://schemas.android.com/apk/res/android" 
      package="com.bignerdranch.android.taskmanager"> 

    <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" /> 
    <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" /> 
    <uses-permission android:name="android.permission.INTERNET" /> 
    <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" /> 
    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /> 

    <application 
     android:name=".TaskManagerApplication" 
     android:allowBackup="true" 
     android:icon="@mipmap/ic_launcher" 
     android:label="@string/app_name" 
     android:supportsRtl="true" 
     android:theme="@style/AppTheme"> 
     <meta-data 
      android:name="com.google.android.maps.v2.API_KEY" 
      android:value="AIza..........................." /> 
     <activity android:name=".ViewTasksActivity"> 
      <intent-filter> 
       <action android:name="android.intent.action.MAIN"/> 

       <category android:name="android.intent.category.LAUNCHER"/> 
      </intent-filter> 
     </activity> 
     <activity android:name=".AddTaskActivity" 
        android:text="@string/add_task"/> 
     <activity android:name=".AddLocationMapActivity" 
        android:text="@string/add_location_to_task"/> 

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

</manifest> 

Затем файл build.gradle:

apply plugin: 'com.android.application' 

android { 
    compileSdkVersion 'Google Inc.:Google APIs:24' 
    buildToolsVersion "24.0.2" 

    defaultConfig { 
     applicationId "com.bignerdranch.android.taskmanager" 
     minSdkVersion 16 
     targetSdkVersion 24 
     versionCode 1 
     versionName "1.0" 
    } 
    buildTypes { 
     release { 
      minifyEnabled false 
      proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' 
     } 
    } 
} 

dependencies { 
    compile fileTree(include: ['*.jar'], dir: 'libs') 
    testCompile 'junit:junit:4.12' 
    compile 'com.android.support:appcompat-v7:24.2.1' 
    compile 'com.google.android.gms:play-services-maps:10.0.1' 
    compile 'com.google.android.gms:play-services-location:10.0.1' 
} 

И, наконец, , это то, что генерируется Monito г:

12-02 22:37:10.351 22387-22537/com.bignerdranch.android.taskmanager W/System.err: IOException processing: 26 
12-02 22:37:10.351 22387-22537/com.bignerdranch.android.taskmanager W/System.err: java.io.IOException: Server returned: 3 
12-02 22:37:10.352 22387-22537/com.bignerdranch.android.taskmanager W/System.err:  at android_maps_conflict_avoidance.com.google.googlenav.map.BaseTileRequest.readResponseData(BaseTileRequest.java:115) 
12-02 22:37:10.352 22387-22537/com.bignerdranch.android.taskmanager W/System.err:  at android_maps_conflict_avoidance.com.google.googlenav.map.MapService$MapTileRequest.readResponseData(MapService.java:1473) 
12-02 22:37:10.352 22387-22537/com.bignerdranch.android.taskmanager W/System.err:  at android_maps_conflict_avoidance.com.google.googlenav.datarequest.DataRequestDispatcher.processDataRequest(DataRequestDispatcher.java:1117) 
12-02 22:37:10.352 22387-22537/com.bignerdranch.android.taskmanager W/System.err:  at android_maps_conflict_avoidance.com.google.googlenav.datarequest.DataRequestDispatcher.serviceRequests(DataRequestDispatcher.java:994) 
12-02 22:37:10.352 22387-22537/com.bignerdranch.android.taskmanager W/System.err:  at android_maps_conflict_avoidance.com.google.googlenav.datarequest.DataRequestDispatcher$DispatcherServer.run(DataRequestDispatcher.java:1702) 
12-02 22:37:10.352 22387-22537/com.bignerdranch.android.taskmanager W/System.err:  at java.lang.Thread.run(Thread.java:818) 

Я БЫ НАВСЕГДА БЛАГОДАРЕН человек, который может помочь мне понять эту проблему OUT! Grey tiles instead of map

ответ

0

Карта, на которой вы используете com.google.android.maps.MapView, является v1 API карты Google. К сожалению, он официально устарел.

Вы должны использовать новую версию Google Maps API, которая Version 2

Вот учебник для Google Map V2

+0

Это моя проблема! Спасибо! Но есть ли у вас какие-либо указания о том, как «перевести» этот код на V2? – AlwaysWin

+0

версия V2 настолько отличается, я добавил учебник в свой ответ, просто следуйте этому –