2011-05-29 44 views
5

我试图根据Android网站here的教程创建一个MapView应用程序。我已经设置了一切,地图显示,但空的瓷砖!Android Google Maps API与debug.keystore不兼容

我使用的API密钥从位于的debug.keystore生成的“C:\用户\皮特\ .android”和所有正确的权限都在清单中设置。地图库也在清单中,但它仍然不起作用。我已经尝试创建一个新的调试密钥库并将其放置在相同的文件夹中(显然也会生成一个新的API密钥),但仍然没有运气。

(30/05/2011)编辑:

的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

当您尝试启动应用程序时,您遇到了什么错误? – wajiw 2011-05-29 23:07:23

+0

对不起,如果这是愚蠢的,但为什么你不能生成自己的API密钥用于您的Google帐户? – Alan 2011-05-29 23:07:23

+0

其实,如果我记得,我认为示例文档的格式不正确。我会仔细检查并确保您的清单文件格式正确。 – Alan 2011-05-29 23:10:23

回答

3

你的清单文件需要一些改组:

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

尝试这一点,我会仔细看一下你的其他文件,看看我能找到的任何东西。

+0

工作,谢谢!你能解释为什么这是原因吗? – Peter 2011-05-30 02:36:52

+0

@Peter你需要将用户许可节点作为 wajiw 2011-05-30 02:49:35

1

这里重要的是总是使用正确的指纹(指纹密钥库)。我之前有同样的问题:)。如果您正在调试您的应用程序,请使用调试指纹described here,您将会很安全。然后,如果您决定发布应用程序,那么您将创建自己的指纹供公众使用。

相关问题