25

嗨,我最近关注了 Vogella 关于 Google Map API v2 的教程。代码与他的相似。但是由于某种原因,地图显示为空白,并且 logcat 也没有显示错误。我还按照此视频获取 SHA1 指纹,然后将 API 密钥放入清单文件中。我使用了调试密钥库 C:\Users\UserName.android\debug.keystore,它也是位于 Eclipse -> Windows -> Preference -> Android -> Build 中的默认调试密钥库。

我还生成了一个新的 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; } }

谢谢!

4

13 回答 13

28

您的清单有几个权限问题。首先,在下面你需要用你的包替换包名,你还需要作为一个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"/>

最后,您似乎缺少入门指南的指定权限部分中的以下权限-

<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"/>
于 2013-02-07T22:03:27.210 回答
10

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

于 2014-07-09T11:05:56.927 回答
2

如果它不起作用,请按照这个

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

1-仔细阅读本教程的所有步骤。

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

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

于 2013-09-04T12:48:42.260 回答
2

我必须将正确的 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中将其添加到该特定应用的凭据中

于 2016-08-30T20:04:35.480 回答
1

我的地图也有类似的问题。修复所有库和关键问题后,我只看到一个标有“Google”的白色屏幕。问题是,我MapFragmentScrollView. 删除后ScrollView一切正常。我可以看到地图。

于 2015-04-30T15:42:08.833 回答
0

您必须在具有以下配置的模拟器中运行您的应用程序.. 1) Google API(x86 System image) 2) 选中指示使用主机 GPU 的复选框..

于 2014-09-17T23:18:20.733 回答
0

大多数人忘记在开发者控制台中激活 Google Maps Android API V2,我激活了它,瞧,我的地图出现了。

于 2014-11-16T01:56:04.577 回答
0

将自定义键位设置为与默认键位相同(Eclipse)。并按照文档中的说明在 google 控制台中注册一个 API 密钥。

于 2014-12-05T01:23:28.427 回答
0

就我而言,这是我从 GitHub 克隆的现有应用程序,并且没有更改 API 密钥。对我有用的是启用我的签名证书的 SHA-1。按照这些简短说明获取 SHA-1 指纹。

然后我让主要开发人员在此处将我的 SHA-1 指纹添加到他的相关 API 密钥的授权包中。然后我以同样的方式再次进行了构建,并且成功了。

于 2016-08-10T13:08:58.317 回答
0

我在其他帖子中的回答是对我真正有用的,我粘贴了App 签名证书sha-1

于 2017-09-15T02:30:03.417 回答
0

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

于 2021-02-14T07:03:43.400 回答
-1

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

在此处输入图像描述

于 2015-11-04T22:11:55.337 回答
-2

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

有效的方法是替换它:

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

这样

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

直接添加您的 api 密钥,无需资源字符串

于 2015-06-24T15:24:52.897 回答