当前位置: 动力学知识库 > 问答 > 编程问答 >

java - Android Google Maps API not working with debug.keystore

问题描述:

I am attempting to create a MapView application following the tutorial from the Android website here. I have got everything set up and the map displays but with empty tiles!

The API key I'm using is generated from the debug.keystore located in "C:\Users\Pete\.android" and all of the correct permissions are set up in the manifest. The maps library is also in the manifest but it still doesn't work. I have tried creating a new debug keystore and placed it in the same folder (obviously also generating a new API key) and still no luck.

(30/05/2011) Edit:

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;

}

}

网友答案:

Your manifest file needs some reshuffling:

<?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>

Try that and I'll look through your other files to see if I can find anything else.

网友答案:

The <uses-permission> tags need to go outside of the <application> tag.

See: Google map displaying only blank tiles android

网友答案:

Important thing here is always to use proper fingerprint (keystore for fingerprint). I had the same problem before:). If you are debugging your application, use debug fingerprint as is described here and you will be safe. Then if you will decide to publish application then you will create own fingerprint for public use.

分享给朋友:
您可能感兴趣的文章:
随机阅读: