2010-12-07 11 views
6

El problema es que mi mapa no se muestra. Es solo la cuadrícula que muestra cuando usted (por ejemplo :) no tiene el permiso de INTERNET.¿Alguien me puede ayudar a hacer funcionar esta aplicación de mapas?

Aquí es mi clase java:

public class MapClass extends MapActivity { 

public void onCreate(Bundle icicle) { 
    super.onCreate(icicle); 
    setContentView(R.layout.maplayout); 

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

@Override 
protected boolean isRouteDisplayed() { 
    // TODO Auto-generated method stub 
    return false; 
} 
} 

Aquí está mi archivo de diseño XML (menos la clave del mapa):

<?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:enabled="true" android:layout_height="fill_parent" 
    android:clickable="true" android:apiKey="MY-API-KEY" /> 

</RelativeLayout> 

Y aquí es mi archivo de manifiesto:

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

<application android:icon="@drawable/icon" android:label="@string/app_name" 
    android:debuggable="true"> 

    <uses-library android:name="com.google.android.maps" /> 
    <activity android:name=".MapClass" android:label="@string/app_name" 
    android:theme="@android:style/Theme.NoTitleBar"> 

    <intent-filter> 

    <action android:name="android.intent.action.MAIN" /> 
    <category android:name="android.intent.category.LAUNCHER" /> 

    </intent-filter>> 

    </activity> 
</application> 

<uses-sdk android:minSdkVersion="1" /> 

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

<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" /> 
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" /> 
<uses-permission android:name="android.permission.ACCESS_LOCATION_EXTRA_COMMANDS" /> 

</manifest> 
+1

Supongo que la clave de la API es incorrecta. ¿Estás seguro de haberlo generado correctamente? – blindstuff

+0

Yo también pensé eso. Lo he generado alrededor de 10 veces, en múltiples computadoras. También copié el código XML de MapView directamente de Google, donde generaron la clave por si acaso estaba estropeando algo allí. Aún nada. – NotACleverMan

+1

¿Lo está probando en el emulador? Si es así, ¿ya has actualizado al nuevo ADT? –

Respuesta

3

Asegúrese su aplicación está firmada con la clave de firma que ha asociado con su clave Map API. Sospecho que está depurando, por lo que la aplicación está firmada con el almacén de claves de depuración ... debe generar una clave de API de Map diferente para eso.

Guardo 2 diseños, uno para cada clave Map API. Elegí dinámicamente mi diseño en función de si estoy ejecutando una versión de depuración o lanzamiento.

+0

No estoy firmando mi aplicación porque no estoy creando el APK. Simplemente lo estoy ejecutando en el emulador y depurando en mi teléfono. ¿Hay alguna otra manera? para firmar una aplicación? La única forma en que sé cómo crear una APK con la clave, copiarla en mi teléfono y luego instalarla. – NotACleverMan

+0

Hmmm. Funciona la APK y luego la copia en mi teléfono. Eso es extraño porque Lo tuve trabajando en el emulador el año pasado y nunca escuché una clave de depuración. Gracias – NotACleverMan

+0

Cuando ejecuta/depura una aplicación en un dispositivo/emulador de Eclipse, el APK se genera y se firma con la clave de firma de depuración. Si desea implementar una aplicación en Android Market, debe crear su propia clave de firma y firmarla con ella. Lea sobre esto en – shammer64

Cuestiones relacionadas