我正在尝试创建与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>
答案 0 :(得分:11)
好的问题解决了。在谷歌api控制台上,有两个谷歌地图api v2&#39; s。我有一个只是谷歌地图api v2,如果你看上面它,它说google maps v2 android。我也打开了那个,地图正在运行。
答案 1 :(得分:4)
从错误看来,Google的API控制台中的配置似乎是错误的。看看我写的这篇博文,确保你正确地完成了所有步骤:
答案 2 :(得分:1)
@rajwant rai:也许你的代码是针对API v1的,因为我使用API v2并且不需要这样的代码。
@author:你在手机或模拟器上测试它吗?手机必须安装一些Google服务才能使地图正常工作。 如何准备工作项目更多描述如下: https://developers.google.com/maps/documentation/android/start
答案 3 :(得分:1)
有两种模式。发布模式和调试模式,如果要在发布模式下使用,那么你想自定义创建fingure打印。调试模式是常用模式。
https://developers.google.com/maps/documentation/android/start#obtaining_an_api_key
请参阅在doucmentation中显示发布证书指纹和调试认证fingure print
答案 4 :(得分:0)
尝试在清单文件中添加以下内容(在元数据标记之后)
<uses-library
android:name="com.google.android.maps"
android:required="true" />
答案 5 :(得分:0)
我有同样的问题,但对我来说,应用程序停止工作。我发现Eclipse生成的debug.keystore存在问题。它可能发生在:
debug.keystore
来自本地目录USER_DIR.android\debug.keystore
debug.keystore
USER_DIR.android\debug.keystore
要确认此问题,请从USER_DIR.android\debug.keystore
获取SHA1并与Android Console中的SHA1进行比较。他们必须是一样的。如果没有尝试按照this guide生成新的 Android for Android应用键。
获得后,请更新AndroidManifest.xml
文件
<meta-data
android:name="com.google.android.maps.v2.API_KEY"
android:value="NEW_API_KEY"/>
并清理整个./bin
目录。手动制作,不要信任 Project - &gt; Eclipse中的Clean ... 选项。在安装新应用之前,先从设备上卸载应用。
为了避免将来出现此问题,请将调试密钥库添加到repo。保密释放。