前言:
今天翻了一个上午的网络,在android 模拟器下配置google maps遇到了问题,查阅了一堆资料,多数讲解的不是很清晰,呵呵,经过多次试验终于OK了,现把每一步详细列出来,提供给像我这样的初学者。大家共同进步
1)首先你要确定你安装的JDK位置,Windows->Preferences->Java->Installed JREs,你可以看到是Jre的location,再在dos cmd模式下查看你当前系统的path是否已经包含了。如果没有包含添加到当前环境参数中。因为我们要用到的keytool命令在这个目录下呀。
2)接下来就要找到你不前AVD的debug.keystore的位置,windows->perferences->android->build,
default debug keystore文本框中,列出C:\Documents and Settings\XXXXuser\.android\debug.keystore,这就是默认的debug.keystore,你可以先把这个文件改一下名。我们需要创建一个新的debug.keystore
3)紧接着我们来创建一个新的debug.keystore,在cmd下,进入C:\Documents and Settings\XXXXuser\.android目录
执行命令如下:
keytool -genkey -v -keystore debug.key store -alias androiddebugkey -keyalg RSA -validity 10000
输入密码,用户等信息确认后生成一个debug.keystore
4)好了,接下来我们就需要获取MD5,去google申请一个apikey,很简单
在当前目录下执行:
keytool -list -alias androiddebugkey -keystore debug.keystore
根据提示输入你在第三步所设的密码,ok,就会得到下面信息,
Certificate fingerprint (MD5): FC:ED:DE:BS:16:1A:E8:05:F0:44:AD:4E:45:42:4B:D4
这就是我们申请apikey时需要的FC:ED:DE:BS:16:1A:E8:05:F0:44:AD:4E:45:42:4B:D4
通过浏览器访问http://code.google.com/android/maps-api-signup.html
在My certificate's MD5 fingerprint文本框中输入您刚刚获取到的MD5码
点击Generate API Key,
Thank you for signing up for an Android Maps API key!
Your key is:
0yRkOg8325bNSbeuYXZMsj-CMG2rXXXqFBoa11A
这就是apikey了,记得保存下呀
5)新建一个android项目
修改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"
>
<view class = "com.google.android.maps.MapView"
android:id = "@+id/my_map"
android:enabled = "true"
android:apiKey="0yRkOg8325bNSbeuYXZMsj-CMG2rXXXqFBoa11A"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
/>
</LinearLayout>
在layout中定义mapview时需要加入apikey, 如:android:apiKey="0yRkOg8325bNSbeuYXZMsj-CMG2rXXXqFBoa11A"
6)修改androidmanifest.xml
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.testmap"
android:versionCode="1"
android:versionName="1.0">
<application android:icon="@drawable/icon" android:label="@string/app_name">
<uses-library android:name="com.google.android.maps" />
<activity android:name=".testmap"
android:label="@string/app_name">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
</application>
<uses-sdk android:minSdkVersion="5" />
<uses-permission android:name="android.permission.INTERNET"></uses-permission>
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION"></uses-permission>
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"></uses-permission>
</manifest>
我们需要加入用户库引用<uses-library android:name="com.google.android.maps" />
当然了还要加入权限的定义
<uses-permission android:name="android.permission.INTERNET"></uses-permission>
这两步必不可少
7)最后就是主class了
import com.google.android.maps.GeoPoint;
import com.google.android.maps.MapActivity;
import com.google.android.maps.MapController;
import com.google.android.maps.MapView;
import android.os.Bundle;
public class testmap extends MapActivity {
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
//get map view
MapView mv = (MapView) findViewById(R.id.my_map);
MapController controller = (MapController)mv.getController();
GeoPoint p = new GeoPoint((int) (24.7 * 1000000),(int)(-238.8 * 1000000));
controller.animateTo(p);
controller.setZoom(9);
}
@Override
protected boolean isRouteDisplayed() {
// TODO Auto-generated method stub
return false;
}
}