要想使用Google Map,那么一定需要注册一个Google的通行证,注册地址:
https://accounts.google.com/ServiceLoginAuth。
如果要申请Goolge Map服务,那么必须生成一个MD5指纹码,而这个指纹码,可以
通过debug.keystore生成。
这个是一个签名的文件,对于所有的Android程序而已必须有此文件才可以打包编译,
而在一个Android虚拟机建立完成之后会自动的在一个目录中生成此文件,此目录一般为:
C:\Users\Administrator\.android
签名文件的有效期是1年,1年之后如果没有重新做系统,那么这个文件就无法再自动的
进行Android程序的打包操作,此时只能将此文件删除,之后会自动生成一个新的,这样
有可以继续使用1年。
每一台电脑都要申请属于自己的android:apiKey,要是使用别人的android:apiKey,
则地图只显示方格,不会有实际的地图出现,并且在Android虚拟机重建或者重装电脑的操作系统的时候
也要重新申请android:apiKey,关于如何申请,我在“申请Google Map服务”中已说得很详细。
申请Google Map Android API Key:
1、进入https://accounts.google.com/ServiceLoginAuth申请google通行证,
我申请得的账号为:[email protected];
2、生成证书指纹(MD5),执行: C:\Users\Administrator\.android,
执行: keytool -list -v -keystore debug.keystore,口令为: android,
我得到的MD5为: 17:5A:46:90:5F:B1:E2:37:DA:12:A0:B5:54:4C:19:56;
3、如果在第4歩输入MD5的地方没有显示出来,则找到本地的hosts文件,在C:\Windows\System32\drivers\etc
目录下,打开hosts文件(修改hosts文件需要管理员权限),往里面最底部加
入203.208.46.180 google-developers.appspot.com;
4、打开网址https://developers.google.com/android/maps-api-signup?hl=zh-CN;
5、在已经登录的情况下将MD5复制进My certificate's MD5 fingerprint中,再选择同意,最后选择生成;
6、将<com.google.android.maps.MapView
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:apiKey="0Pm9QrsSh_mwtc6rMyqZMRu71qFpIB51UXVWHmg"/>
复制出来,"0Pm9QrsSh_mwtc6rMyqZMRu71qFpIB51UXVWHmg"这个就是我们所需要拿到的。
新建一个地图项目。
在main.xml中:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical" android:layout_width="fill_parent"
android:layout_height="fill_parent">
<com.google.android.maps.MapView
android:clickable="true"
android:enabled="true"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:apiKey="0Pm9QrsSh_mwtc6rMyqZMRu71qFpIB51UXVWHmg" />
</LinearLayout>
在MyGoogleMapDemo.java中:
package com.li.googlemapproject;
import android.os.Bundle;
import com.google.android.maps.MapActivity;
public class MyGoogleMapDemo extends MapActivity {
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
super.setContentView(R.layout.main);
}
@Override
protected boolean isRouteDisplayed() {
return false;
}
}
在AndroidManifest.xml中修改权限:
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.li.googlemapproject"
android:versionCode="1"
android:versionName="1.0" >
<uses-sdk
android:minSdkVersion="8"
android:targetSdkVersion="15" />
<application
android:icon="@drawable/ic_launcher"
android:label="@string/app_name"
android:theme="@style/AppTheme" >
<activity
android:name=".MyGoogleMapDemo"
android:label="@string/title_activity_my_google_map_demo" >
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<uses-library android:name="com.google.android.maps" />
</application>
<uses-permission android:name="android.permission.INTERNET"/>
</manifest>