2011-05-29 15 views
5

Estoy intentando crear una aplicación MapView siguiendo el tutorial del sitio web de Android here. ¡Tengo todo configurado y el mapa aparece pero con baldosas vacías!Android Google Maps API no funciona con debug.keystore

La clave API que estoy utilizando se genera desde la depuración.keystore ubicada en "C: \ Users \ Pete \ .android" y todos los permisos correctos están configurados en el manifiesto. La biblioteca de mapas también está en el manifiesto, pero todavía no funciona. Intenté crear un nuevo almacén de claves de depuración y lo coloqué en la misma carpeta (obviamente también generando una nueva clave de API) y todavía no tuve suerte.

(30/05/2011) Editar:

Manifest.xml

<?xml version="1.0" encoding="utf-8"?> 
<manifest xmlns:android="http://schemas.android.com/apk/res/android" 
     package="com.stringerapps.testing.gps" 
     android:versionCode="1" 
     android:versionName="1.0"> 
    <uses-sdk android:minSdkVersion="8" /> 

    <application android:icon="@drawable/icon" android:label="@string/app_name"> 
     <activity android:name=".Home" 
       android:label="@string/app_name"> 
      <intent-filter> 
       <action android:name="android.intent.action.MAIN" /> 
       <category android:name="android.intent.category.LAUNCHER" /> 
      </intent-filter> 
     </activity> 

    <!-- import the library com.google.android.maps!!! --> 
    <uses-library android:name="com.google.android.maps" /> 

    <!-- permissions --> 
    <uses-permission 
     android:name="android.permission.INTERNET"> 
    </uses-permission> 
    <uses-permission 
     android:name="android.permission.ACCESS_FINE_LOCATION"> 
    </uses-permission> 

    </application> 

</manifest> 

layout.xml

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

    android:id="@+id/mainlayout" 
    android:orientation="vertical" 
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent" > 

<com.google.android.maps.MapView 
    android:id="@+id/mapview" 
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent" 
    android:clickable="true" 
    android:apiKey="api-key-here-omitted"/> 

</RelativeLayout> 

Home.xml

package com.stringerapps.testing.gps; 

import java.util.List; 

import android.graphics.drawable.Drawable; 
import android.os.Bundle; 
import android.widget.LinearLayout; 

import com.google.android.maps.GeoPoint; 
import com.google.android.maps.MapActivity; 
import com.google.android.maps.MapView; 
import com.google.android.maps.Overlay; 
import com.google.android.maps.OverlayItem; 

public class Home extends MapActivity { 

LinearLayout linearLayout; 
MapView mapView; 

List<Overlay> mapOverlays; 
Drawable drawable; 
MyItemizedOverlay itemizedOverlay; 

/** Called when the activity is first created. */ 
@Override 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.layout); 

    mapView = (MapView) findViewById(R.id.mapview); 
    mapView.setBuiltInZoomControls(true); 

    mapOverlays = mapView.getOverlays(); 
    drawable = this.getResources().getDrawable(R.drawable.androidmarker); 
    itemizedOverlay = new MyItemizedOverlay(drawable); 

    GeoPoint point = new GeoPoint(19240000, -99120000); 
    OverlayItem overlayitem = new OverlayItem(point, "", ""); 

    GeoPoint point2 = new GeoPoint(35410000, 139460000); 
    OverlayItem overlayitem2 = new OverlayItem(point2, "", ""); 

    itemizedOverlay.addOverlay(overlayitem); 
    itemizedOverlay.addOverlay(overlayitem2); 
    mapOverlays.add(itemizedOverlay); 
} 

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

¿Cuál es el error que está recibiendo cuando intenta iniciar la aplicación? – wajiw

+0

Disculpe si esto es tonto, pero ¿por qué no puede generar su propia clave de API para usar con su cuenta de Google? – Alan

+0

En realidad, si mal no recuerdo, creo que los documentos de ejemplo tenían malformaciones xml. Verificaría dos veces y me aseguraré de que sus archivos de manifiesto estén bien formados. – Alan

Respuesta

3

su archivo de manifiesto necesita un poco de reorganización:

<?xml version="1.0" encoding="utf-8"?> 
<manifest xmlns:android="http://schemas.android.com/apk/res/android" 
     package="com.stringerapps.testing.gps" 
     android:versionCode="1" 
     android:versionName="1.0"> 
    <uses-sdk android:minSdkVersion="8" /> 

    <!-- permissions --> 
    <uses-permission 
     android:name="android.permission.INTERNET"> 
    </uses-permission> 
    <uses-permission 
     android:name="android.permission.ACCESS_FINE_LOCATION"> 
    </uses-permission> 
    <application android:icon="@drawable/icon" android:label="@string/app_name"> 
     <activity android:name=".Home" 
       android:label="@string/app_name"> 
      <intent-filter> 
       <action android:name="android.intent.action.MAIN" /> 
       <category android:name="android.intent.category.LAUNCHER" /> 
      </intent-filter> 
     </activity> 

    <!-- import the library com.google.android.maps!!! --> 
    <uses-library android:name="com.google.android.maps" /> 


    </application> 
</manifest> 

probar eso y voy a mirar a través de sus otros archivos para ver si puedo encontrar otra cosa.

+0

¡Funcionó, gracias! ¿Puedes explicar por qué esta es la causa? – Peter

+0

@Peter necesita tener los nodos de permisos de uso colocados como hijos de wajiw

1

Lo importante aquí es usar siempre una huella digital adecuada (almacén de claves para la huella dactilar). Yo tuve el mismo problema antes:). Si está depurando su aplicación, use la huella digital de depuración como está described here y estará seguro. Luego, si decide publicar la aplicación, creará su propia huella digital para uso público.