谷歌地图API v2灰屏问题

6

我正在尝试创建一个与谷歌地图连接的应用程序。但是当屏幕加载到地图应该出现的位置时,只有灰色。我该如何解决这个问题?

从我的logcat中重要的信息。

06-11 03:32:55.196: E/Google Maps Android API(11671): 
Ensure that the following correspond to what is in the API Console: Package Name: my pacakage,
 API Key: my key, 
Certificate Fingerprint: my fingerprint

活动

import android.os.Bundle;
import android.view.Menu;

import android.support.v4.app.FragmentActivity;

public class mapPage extends FragmentActivity {


    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.map_page);
    }

    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        // Inflate the menu; this adds items to the action bar if it is present.
        getMenuInflater().inflate(R.menu.main, menu);
        return true;
    }

}

清单

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="my package"
    android:versionCode="1"
    android:versionName="1.0" >

    <uses-sdk
        android:minSdkVersion="8"
        android:targetSdkVersion="17" />
    <permission
    android:name="my package.permission.MAPS_RECEIVE"
    android:protectionLevel="signature"/>
  <uses-permission android:name="my package.permission.MAPS_RECEIVE"/>
  <!-- Copied from Google Maps Library/AndroidManifest.xml. -->
  <uses-sdk
    android:minSdkVersion="8"
    android:targetSdkVersion="16"/>
  <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>
  <uses-permission android:name="android.permission.INTERNET"/>
  <uses-permission android:name="com.google.android.providers.gsf.permission.READ_GSERVICES"/>
  <!-- External storage for caching. -->
  <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
  <!-- My Location -->
  <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION"/>
  <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"/>
  <!-- Maps API needs OpenGL ES 2.0. -->
  <uses-feature
    android:glEsVersion="0x00020000"
    android:required="true"/>
  <!-- End of copy. -->
    <application
        android:allowBackup="true"
        android:icon="@drawable/ic_launcher"
        android:label="@string/app_name"
        android:theme="@style/AppTheme" >

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

        <activity
            android:name="my package.MainActivity"
            android:label="@string/app_name" >
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />

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

         <activity android:name=".main">
               </activity>

         <activity android:name=".mapPage">
              </activity>

         <activity android:name=".ThirdPartyWeb"
          android:theme="@android:style/Theme.Dialog">  

              </activity>

    </application>

</manifest>

布局
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent" >

  <fragment xmlns:android="http://schemas.android.com/apk/res/android"
  android:id="@+id/map"
        android:layout_alignParentTop="true"
        android:layout_centerInParent="true"
        android:layout_height="250dp"
        android:layout_width="fill_parent"
  class="com.google.android.gms.maps.SupportMapFragment"/>

    <ImageView 
        android:layout_alignParentTop="true"
        android:layout_centerInParent="true"
        android:layout_height="50dp"
        android:layout_width="fill_parent"
        android:background="@color/darkGrey"/>

        <Button 
        android:layout_alignParentTop="true"
        android:layout_marginTop="10dp"
        android:layout_alignParentLeft="true"
        android:id="@+id/menuButton"
        android:background="@drawable/icon_menu"
        android:layout_height="30dp"
        android:layout_width="30dp"/>

         <Button 
        android:layout_alignParentTop="true"
        android:layout_marginTop="10dp"
        android:layout_toRightOf="@+id/menuButton"
        android:layout_marginLeft="20dp"
        android:id="@+id/"
        android:background="@drawable/icon_off"
        android:layout_height="35dp"
        android:layout_width="55dp"/>

       <EditText          
        android:layout_alignParentTop="true"
        android:layout_width="wrap_content"
        android:layout_marginTop="10dp"
        android:layout_toRightOf="@+id/"
        android:layout_marginLeft="20dp"
        android:layout_toEndOf="@+id/"
        android:id="@+id/seachBox"
        android:hint="@string/search"
        android:layout_height="35dp"
        android:layout_alignParentEnd="true"
        android:background="@color/white"/>

       <Button 
        android:layout_alignParentTop="true"
        android:layout_alignParentRight="true"
        android:layout_marginTop="10dp"
        android:id="@+id/searchButton"
        android:background="@drawable/graphic_search"
        android:layout_height="35dp"
        android:layout_width="20dp"/>

       <ImageView 
        android:layout_above="@+id/newsFeed"
        android:layout_centerInParent="true"
        android:layout_height="35dp"
        android:layout_width="fill_parent"
        android:background="@color/darkGrey"/>

       <TextView 
           android:layout_alignParentLeft="true"
           android:layout_height="wrap_content"
           android:layout_width="wrap_content"
           android:layout_above="@+id/newsFeed"
           android:layout_marginBottom="11dp"
           android:textColor="@color/white"
           android:text="@string/news_feed"
            android:textAppearance="?android:attr/textAppearanceSmall"/>

        <ListView 
           android:layout_alignParentBottom="true"
           android:id="@+id/newsFeed"
           android:layout_width="fill_parent"
           android:layout_height="wrap_content">"

       </ListView>



</RelativeLayout>
6个回答

11

好的,问题已解决。在谷歌API控制台上,有两个谷歌地图API v2。我只有一个是用于谷歌地图API V2的,如果您仔细查看它上面,它会说谷歌地图v2 Android。我也打开了它,并且地图正在运行。


您不需要使用Google Map API V2,因为它是用于基于Web的应用程序/网站的JavaScript API。 - ingh.am

4
从错误来看,你在Google API控制台的配置似乎有误。请查看我写的这篇博客文章,并确保你正确执行了所有步骤:Google Maps API V2 Key

指纹 API 密钥和包名称在我的 API 控制台中都匹配。 - Billy Korsen

1

@rajwant rai: 也许你的代码是针对API v1的,因为我使用的是API v2,这样的代码是不必要的。

@author: 你是在手机上还是模拟器上测试的?手机必须安装一些谷歌服务才能使地图正常工作。 如何准备工作项目更详细地描述在这里: https://developers.google.com/maps/documentation/android/start


1

我每次都在签署应用程序并将apk移动到我的设备进行调试,我的密钥和所有内容都与我的API控制台匹配。 - Billy Korsen

0

我遇到了同样的问题,但我的应用程序停止工作了。我发现这是Eclipse生成的debug.keystore的问题。可能是因为以下原因:

  • 源代码从repo更新,但debug.keystore是从本地目录USER_DIR.android\debug.keystore获取的;
  • 你的磁盘出现故障,并且你没有恢复旧的debug.keystore;
  • 你以某种方式删除了USER_DIR.android\debug.keystore。

要确认此问题,请从你的USER_DIR.android\debug.keystore中获取SHA1,并与Android Console中的SHA1进行比较。它们必须相同。如果不同,请按照此指南生成新的“Android应用密钥”。

一旦获取到它后,就更新你的AndroidManifest.xml文件。

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

清理整个./bin目录。需要手动处理,不要信任Eclipse中的Project->Clean...选项。在安装新应用之前从设备中卸载旧应用。
为了避免未来出现这种问题,请将您的调试密钥库添加到代码库中。保持发布过程的机密性。

0
尝试将以下内容添加到清单文件中(在 meta-data 标记之后)。
 <uses-library
    android:name="com.google.android.maps"
    android:required="true" /> 

1
这是Google API v1的权限,不需要在Google API v2中使用。 - Emil Adz
@techroid 您的建议仅适用于地图 V1 版本。 - IgorGanapolsky

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