2015-06-12 3 views
3

Я новичок в Android и пытаюсь отобразить карту Google на Android-телефоне. Я создал API-ключ, который должен работать для любого приложения Android (я не предоставлял никаких конкретных SHA для моего приложения). Я предполагаю, что это не имеет значения. Используя Google Google Tutorials, я делаю все шаги, я получаю водяной знак google слева внизу, но нет карты. Я буду публиковать весь используемый код. Я попытался использовать Google Maps Activity, загруженную в Android Studio 1.2.1.1. Я не получаю никаких ошибок, но не получаю карту.Android Google Mapview Деятельность не открывается в Android Studio

Я использую MapFragment, поскольку это кажется более простым, чем MapView.

Я также просмотрел консоль разработчиков для этого API - у меня нет никакого трафика - может быть, что ключ API не используется, и поэтому мое приложение не получает отчет? Я подозреваю, что - как я могу это проверить?

Я пытаюсь выполнить шаги здесь - https://developers.google.com/maps/documentation/android/map

Другой связанный запрос, я предполагаю, что я могу создать Mutiple макеты. Я начал с Blank Activity, который действует как мой экран Splash, затем я пытаюсь перейти к Activity Map Activity - я не могу создать активность карты внутри Android Studio. Я могу создать его как первое действие с помощью мастера, но не как второе действие. Я что-то упускаю?

Любая помощь приветствуется

AndroidManifest.xml 



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

    <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" /> 
    <uses-permission android:name="com.google.android.providers.gsf.permission.READ_GSERVICES" /> 
    <!-- 
The ACCESS_COARSE/FINE_LOCATION permissions are not required to use 
     Google Maps Android API v2, but are recommended. 
    --> 
    <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"/> 

    <application 

     android:allowBackup="true" 
     android:icon="@mipmap/ic_launcher" 
     android:label="@string/app_name" 
     android:theme="@style/AppTheme" > 
     <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="API_KEY" /> 

     <activity 
      android:name=".MapsActivity" 
      android:label="@string/title_activity_maps" > 
      <intent-filter> 
       <action android:name="android.intent.action.MAIN" /> 

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

     </activity> 



    </application> 

</manifest> 

Я также использовал File-> Структура проекта -> Зависимости - App-> и обнаружили, что Google Play Services входит.

MapsActivity.java

package com.nbapl.avapps.mapscreen; 

import com.google.android.gms.maps.*; 
import com.google.android.gms.maps.model.*; 
import android.os.Bundle; 
import android.support.v4.app.FragmentActivity; 

public class MapsActivity extends FragmentActivity implements OnMapReadyCallback { 


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

     MapFragment mapFragment = (MapFragment) getFragmentManager() 
       .findFragmentById(R.id.map); 
     mapFragment.getMapAsync(this); 
    } 



    @Override 
    public void onMapReady(GoogleMap map) { 
      map.addMarker(new MarkerOptions() 
       .position(new LatLng(0, 0)) 
       .title("This is the center")); 
     } 

    } 

Вот Layout XML

<?xml version="1.0" encoding="utf-8"?> 

<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:id="@+id/frame" 
    android:background="#ffe2ff0e" 
    android:clickable="false" 
    android:foreground="#fffff9c5"> 

<fragment xmlns:android="http://schemas.android.com/apk/res/android" 
android:id="@+id/map" 
android:layout_width="match_parent" 
android:layout_height="match_parent" 
android:name="com.google.android.gms.maps.MapFragment" /> 

</FrameLayout> 

Gradle файл с зависимостями enetered на build.gradle уровне модуля

apply plugin: 'com.android.application' 

android { 
    compileSdkVersion 22 
    buildToolsVersion "23.0.0 rc2" 

    defaultConfig { 
     applicationId "com.nbapl.avapps.mapscreen" 
     minSdkVersion 15 
     targetSdkVersion 22 
     versionCode 1 
     versionName "1.0" 
    } 
    buildTypes { 
     release { 
      minifyEnabled false 
      proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' 
     } 
    } 
} 

dependencies { 
    compile fileTree(dir: 'libs', include: ['*.jar']) 
    compile 'com.google.android.gms:play-services:7.5.0' 
    compile 'com.android.support:appcompat-v7:22.2.0' 
} 
+0

Я вставил значение моего API_KEY, используя строки в значениях. – Anand

ответ

2

Ваша деятельность создает макет , но для начала работы с картой вам понадобится дополнительный код:

В MapsActivity.java:

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

    MapFragment mapFragment = (MapFragment) getFragmentManager() 
      .findFragmentById(R.id.map); 
    mapFragment.getMapAsync(this); 
} 

Кроме того, ваша деятельность должна осуществлять OnMapReadyCallback для дополнительной карты логики. См. Документацию по адресу https://developers.google.com/maps/documentation/android/

+0

Джон - вот что я подумал, но не был уверен. Я чувствовал, что я получаю только пустой фрагмент или около того - я ожидал показать какую-то часть карты. – Anand

+0

John D- Я прошел через руководство разработчика, на которое вы ссылались, и проверил все этапы - я обновил весь код в вопросе. Тем не менее такая же проблема. Вы видите, что происходит не так? – Anand

+0

Вы прошли через https://developers.google.com/maps/documentation/android/start, например, загрузив Службы Google Play? Можете ли вы опубликовать какие-либо релевантные записи? –

1

После нескольких дней попыток попробовать все, я создал еще один проект с MapActivity. Я выполнил только инструкции в google-mp-api.xml, которые поставлялись вместе с MapActivity. При этом я создал новые учетные данные Google Maps и API-ключ для приложения. Я заменил это, и все сработало. Все зависимости, сервисы google play все работали автоматически. Карта с маркером (0,0) была настроена. Это работает без усилий. Указатель John D для пересмотра требований API-ключа был полезен.

 Смежные вопросы

  • Нет связанных вопросов^_^