2013-06-10 2 views
0

Я новичок пытается использовать Google Map API v.2, я последовал следующий пример,Google Map APi v.2 не работает

http://www.vogella.com/articles/AndroidGoogleMaps/article.html

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

Вот мой файл манифеста

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

    <uses-sdk 
     android:minSdkVersion="11" 
     android:targetSdkVersion="17" /> 
    <permission 
      android:name="com.example.maptest.permission.MAPS_RECEIVE" 
      android:protectionLevel="signature"/> 
    <uses-permission android:name="com.example.maptest.permission.MAPS_RECEIVE"/> 
    <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"/> 
    <uses-feature 
     android:glEsVersion="0x00020000" 
     android:required="false"/> 
    <application 
     android:allowBackup="true" 
     android:icon="@drawable/ic_launcher" 
     android:label="@string/app_name" 
     android:theme="@style/AppTheme"> 
     <!-- <uses-library 
     android:name="com.google.android.maps" />--> 
     <activity 
      android:name="com.example.maptest.MainActivity" 
      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="MAP_KEK"/> 
    </application> 
</manifest> 

Мой Компоновка 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" 
      android:name="com.google.android.gms.maps.MapFragment"/> 

И мой JAVA код

package com.example.maptest; 


import com.google.android.gms.maps.CameraUpdateFactory; 
import com.google.android.gms.maps.GoogleMap; 
import com.google.android.gms.maps.MapFragment; 
import com.google.android.gms.maps.model.BitmapDescriptorFactory; 
import com.google.android.gms.maps.model.LatLng; 
import com.google.android.gms.maps.model.Marker; 
import com.google.android.gms.maps.model.MarkerOptions; 

import android.annotation.SuppressLint; 
import android.app.Activity; 
import android.app.ProgressDialog; 
import android.os.Bundle; 
import android.support.v4.app.FragmentActivity; 

public class MainActivity 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; 
    private ProgressDialog dialog; 
    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_main); 
     dialog = new ProgressDialog(MainActivity.this); 
     map = ((MapFragment) getFragmentManager().findFragmentById(R.id.map)).getMap(); 
     if (map!=null){ 
     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))); 
      this.dialog.setMessage("Loading Map Please Wait..."); 
      this.dialog.show(); 
      } 
     else if(map == null) 
     { 
      this.dialog.setMessage("Unable to fetch map"); 
      this.dialog.show(); 
     } 
    } 
} 

Как вы можете видеть, я добавил диалоговое окно, чтобы указать, доступен ли Map Object или нет.

+0

ваше устройство версия – Harshid

ответ

0

Вам не хватает ключа карты APi. Более подробную информацию о том, как получить ключ и использовать его, см. На этой странице.

Эмулятор никогда не будет работать, к сожалению (пока не работает с картами), поэтому убедитесь, что если вы подписываете приложение, вы генерируете ключ, основанный на ключевом хранилище подписи, а не на хранилище отладки.

+0

Эй, Джастин, спасибо за подсказку! Спасибо вам за это! –

1

Я упаковал приложение как подписанное приложение и установил его на свой мобильный телефон. Но приложение не будет показывать карту

Убедитесь, что вы установили ключ API, который из тех же хранилища ключей, который вы используете для подписанного приложения.

0

Попытка исправить манифеста:

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

    <uses-sdk 
     android:minSdkVersion="11" 
     android:targetSdkVersion="17" /> 
    <permission 
      android:name="com.example.maptest.permission.MAPS_RECEIVE" 
      android:protectionLevel="signature"/> 
    <uses-permission android:name="com.example.maptest.permission.MAPS_RECEIVE"/> 
    <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"/> 
    <uses-feature 
     android:glEsVersion="0x00020000" 
     android:required="false"/> 
    <application 
     android:allowBackup="true" 
     android:icon="@drawable/ic_launcher" 
     android:label="@string/app_name" 
     android:theme="@style/AppTheme"> 
     <meta-data 
    android:name="com.google.android.maps.v2.API_KEY" 
    android:value="MAP_KEK"/> 
     <!-- <uses-library 
     android:name="com.google.android.maps" />--> 
     <activity 
      android:name="com.example.maptest.MainActivity" 
      android:label="@string/app_name" > 
      <intent-filter> 
       <action android:name="android.intent.action.MAIN" /> 

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

и превратить ваши карты Google API v2 услуги на Google консоли, как this

0

Это кажется, что вам не хватает ключа API. Для этого вам необходимо иметь отпечаток SHA1 (цифровой сертификат), который должен использоваться для извлечения ключа API для вашего приложения, чтобы вы могли использовать Карты Google. Ключ API выглядит следующим образом: AIzaSyDrav17-m1w7W17Gq19gOGvodfbnhyWQRF . Длина его 40 символов и уникальна для вашего приложения. После того, как вы извлечете этот ключ, поместите его в андроид: значение атрибут. Обратитесь к документации here. Надеюсь, что это поможет.

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