Android Google Map API V2空白屏幕

时间:2013-02-07 21:23:22

标签: android google-maps google-maps-android-api-2

您好我最近关注了Google Map API v2上的Vogella教程。代码与他的相似。但由于某种原因,地图显示为空白,而logcat也没有显示任何错误。我也按照这个video来获取SHA1指纹然后我把API密钥放在清单文件中。我使用了调试密钥库C:\ Users \ UserName.android \ debug.keystore,它也是Eclipse中的默认调试密钥库 - > Windows - >偏好 - > Android - >建立。

我还生成了一个新的API密钥,它仍然无效。

清单文件:

<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.example.barcodelibrary"
    android:versionCode="1"
    android:versionName="1.0" >

    <uses-sdk
        android:minSdkVersion="11"
        android:targetSdkVersion="15" />

    <permission
        android:name="com.example.mapdemo.permission.MAPS_RECEIVE"
        android:protectionLevel="signature" />

    <uses-feature
        android:glEsVersion="0x00020000"
        android:required="true" />
    <uses-feature android:name="android.hardware.camera" />
    <uses-feature android:name="android.hardware.camera.autofocus" />
    <uses-feature android:name="android.hardware.camera.flash" />

    <uses-permission android:name="android.permission.INTERNET"/>
    <uses-permission android:name="android.permission.CAMERA"/>
    <uses-permission android:name="android.permission.INTERNET"/>
    <uses-permission android:name="android.permission.VIBRATE"/>
    <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
    <uses-permission android:name="android.permission.SET_DEBUG_APP"></uses-permission>
    <application
        android:icon="@drawable/ic_launcher"
        android:label="@string/app_name"
        android:theme="@style/AppTheme" >
        <activity
            android:name=".HomeActivity"
            android:label="@string/title_activity_home" >
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />

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

        </activity>
        <activity android:name=".ScanActivity"/>
        <activity android:name=".MapActivity"/>
        <activity android:name=".BarcodeHelper"/>
        <activity android:name=".JsonHelper"/>

        <meta-data
            android:name="com.google.android.maps.v2.API_KEY"
            android:value="my api key" />
    </application>

</manifest>

这是我的地图活动布局文件:

    <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context=".MapActivity" >

        <fragment
        android:id="@+id/map"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        class="com.google.android.gms.maps.MapFragment" />

</RelativeLayout>

这是我的地图活动:

public class MapActivity 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; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_map); map = ((MapFragment) getFragmentManager().findFragmentById(R.id.map)) .getMap(); 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))); } @Override public boolean onCreateOptionsMenu(Menu menu) { // Inflate the menu; this adds items to the action bar if it is present. getMenuInflater().inflate(R.menu.activity_map, menu); return true; } }

谢谢!

13 个答案:

答案 0 :(得分:26)

您的清单存在几个权限问题。首先,在下面你需要用你的包替换包名,你还需要uses-permission

 <permission
        android:name="com.example.mapdemo.permission.MAPS_RECEIVE"
        android:protectionLevel="signature" />

根据你的包名,应该是 -

<permission
          android:name="com.example.barcodelibrary.permission.MAPS_RECEIVE"
          android:protectionLevel="signature"/>
<uses-permission android:name="com.example.barcodelibrary.permission.MAPS_RECEIVE"/>

最后,您似乎错过了specifying permissionsGetting Started guide部分中的以下权限 -

<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
<uses-permission android:name="com.google.android.providers.gsf.permission.READ_GSERVICES"/>
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION"/>
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"/>

答案 1 :(得分:9)

对我来说,事实证明我没有启用Google Maps Android API v2。我们使用的另一个Google Maps API我认为是相同的。

答案 2 :(得分:1)

如果它不起作用,请按照

进行操作

解决地图上的空白屏幕问题: 你好,我已经通过这个空白屏幕很长一段时间,并尝试了你可以想象的所有解决方案。现在它解决了,步骤是:

1 - 仔细阅读this tutorial的所有步骤。

2 - 如果空白屏幕仍然相同,请删除存在的调试密钥库文件 c:\ Users \ youUser.android \ debug.keystore&lt; - 删除此文件

3 - 在eClips IDE上重建您的应用程序,以便它自动重新创建此文件。 4-On eclips转到Window - &gt; preferences - &gt; android - &gt; Build 复制新生成的SHA1,然后按照正常的密钥生成步骤操作。 5 - 在你的真实设备上运行,我希望你能看到你的地图:)

答案 3 :(得分:1)

您必须在具有以下配置的amulator中运行您的应用.... 1)Google API(x86系统映像) 2)选择checkBox指示使用主机GPU ..

答案 4 :(得分:1)

我在地图上遇到了类似的问题。在解决了所有的lib和关键问题之后,我刚看到一个白色的屏幕上贴着&#34; Google&#34;。 问题是,我将MapFragment放入ScrollView。删除ScrollView后一切正常。我可以看到地图。

答案 5 :(得分:1)

我必须将正确的SHA-1证书指纹添加到我的Google Developer Console。

  1. 显示当前指纹:keytool -list -keystore ~/.android/debug.keystore

  2. 复制指纹(例如 48:6F:55:B7:C5:E4:54:E1:29:D5:E1:E1:E2:A8

  3. 将其添加到Google Developer Console

  4. 中该特定应用的凭据中

答案 6 :(得分:0)

大多数人忘了激活Google Maps Android API V2 in the developer console,我激活了它,瞧,我的地图出现了。

答案 7 :(得分:0)

将自定义keysote设置为与默认值相同(Eclipse)。并在Google控制台中注册API密钥,如文档中所述。

答案 8 :(得分:0)

Android Studio: 确保将密钥放在正确的层次结构中

enter image description here

答案 9 :(得分:0)

在我的情况下,它是我从GitHub克隆的现有应用程序,并没有更改API密钥。对我有用的是启用签名证书的SHA-1。按照这些short instructions获取SHA-1指纹。

然后我让主开发者将我的SHA-1指纹添加到他的相关API密钥here的授权包中。然后我以相同的方式再次进行构建,并且它有效。

答案 10 :(得分:0)

my answer in other post实际上对我有用,我粘贴应用签名证书 sha-1

答案 11 :(得分:0)

确认您的 api-key 是正确的。您也可以尝试从 API 密钥中删除限制

答案 12 :(得分:-2)

我有一个类似的问题,调试没问题,但发布时出现空白屏幕。 API密钥很好。

取而代之的是:

Class<?

通过这个

<meta-data
            android:name="com.google.android.maps.v2.API_KEY"
            android:value="@string/google_maps_key" /> 

直接添加api密钥而不使用ressource string