6

我正在尝试创建与 Google 地图连接的应用程序。但是当屏幕加载时,地图应该是灰色的。我该如何解决?

来自我的 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>
4

6 回答 6

11

好的问题解决了。在 google api 控制台上,有两个 google map api v2。如果你在上面看,我有一个专为 google maps api v2 设计的,上面写着 google maps v2 android。我也打开了那个,地图正在运行。

于 2013-06-12T10:24:57.643 回答
4

从错误中可以看出,您在 Google 的 API 控制台中的配置似乎是错误的。看看我写的这篇博文,确保你正确地执行了所有步骤:

谷歌地图 API V2 密钥

于 2013-06-11T10:41:50.263 回答
1

@rajwant rai:也许您的代码适用于 API v1,因为我使用 API v2 并且不需要这样的代码。

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

于 2013-06-11T10:41:01.773 回答
1

有两种模式。发布模式和调试模式,如果你想在发布模式下使用,那么你想自定义创建指纹。调试模式是普通模式。

https://developers.google.com/maps/documentation/android/start#obtaining_an_api_key

请参阅在文档中显示发布证书指纹和调试证书指纹

于 2013-06-11T10:44:21.030 回答
0

尝试将以下内容添加到清单文件(在元数据标记之后)

 <uses-library
    android:name="com.google.android.maps"
    android:required="true" /> 
于 2013-06-11T10:29:42.870 回答
0

我有同样的问题,但对我来说应用程序停止工作。我发现 Eclipse 生成的 debug.keystore 有问题。它可能在以下情况下发生:

  • 源代码从 repo 更新,但从debug.keystore本地目录获取USER_DIR.android\debug.keystore
  • 你有光盘故障,你没有恢复旧debug.keystore
  • USER_DIR.android\debug.keystore你以某种方式删除了

要确认此问题,请从您那里获取 SHA1USER_DIR.android\debug.keystore并与Android Console中的进行比较。它们必须相同。如果不尝试按照本指南为 Android 应用程序生成新密钥

一旦你得到它然后更新你的AndroidManifest.xml文件

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

并清理整个./bin目录。手动制作,不要信任Eclipse 中的Project -> Clean...选项。在安装新应用程序之前从设备上卸载应用程序。

为避免将来出现此问题,请将您的调试密钥库添加到 repo。保密释放。

于 2014-01-18T18:14:16.323 回答