安卓谷歌地图API V2空白屏幕

25

你好,最近我按照Vogella的Google Map API v2教程编写了代码,与他的代码类似。但是出现了地图显示为空白,而logcat中也没有错误信息。我还按照这个视频去获取SHA1指纹,然后将API密钥放入清单文件中。我使用的是调试keystore C:\Users\UserName.android\debug.keystore,它也是Eclipse -> Windows -> Preference -> Android -> Build中默认的调试keystore。

我还生成了一个新的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) 
    {
        //加载菜单布局
        getMenuInflater().inflate(R.menu.activity_map, menu);

        return true;
    }
}

你正在使用真实设备进行测试吗? - iagreen
你在谷歌上启用了该服务吗? - Fred
是的,我正在真实设备Galaxy S3上进行测试,并且我还在Google API控制台上激活了API。 - user1832478
13个回答

0

-1

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

enter image description here


-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 密钥,无需资源字符串


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接