|
基于Google Map的Android应用程序的开发
第一步:申请Google Map的API KEY
第二步:简单示例
第三步:注意事项
一、申请Google Map的API KEY
因为一直没有真机,所以不敢涉足Google Map这个领域,但是实在禁不住好奇,今天开始正式进入Google Map开发,下面是记录学习过程。大家一起学习吧。。。
第一步:申请google map api key,这个是必须的,网上看看就知道。
虽然看着简单,里面有很多问题啊,我就是走了很多弯路,因为我的路径中带有空格,所以怎么也不好用,我估计是因为我的路径有空格,就把debug.keystore文件弄到没空格的路径,就好用了。下面说说具体步骤。
1.首先找到debug keystore位置:
打开Eclipse--->Windows--->references--->Android--->Build
一般是这样的路径 C:\Documents and Settings\Administrator\.android\debug.keystore
但是我的路径是这样的:C:\Users\Song Shi Chao\.android\debug.keystore
大家细看,路径中有空格,所以不行。必须把debug.keystore复制到没有空格的路径。一定要注意。
2.获取MD5指纹
不知谁发明的MD5,这么多地方都用到,真烦人,这些前辈总是发明很多东西,然后让我们后人学,你说他们要是不发明这么多东西,我们是不是就轻松很多啊。开个玩笑哈。
在cmd(快捷键:win+R)中执行
第一种方法:
keytool -list -alias androiddebugkey -keystore "C:\Documents and Settings\Administrator\.android\debug.keystore" -storepass android -keypass android
D:\install\java\jdk1.6.0_24\bin>keytool -list -alias androiddebugkey -keystore "
C:\Documents and Settings\Administrator\.android\debug.keystore" -storepass android -keypass android
androiddebugkey, 2011-3-14, PrivateKeyEntry,
认证指纹 (MD5): 33:27:0C:5F:63:4D:E22:8A:E6:E2:5B:F8:86:6E:C5
第二种方法:
D:\install\Java\jdk1.6.0_24\bin>keytool -list -alias androiddebugkey -keystore "
C:\Documents and Settings\Administrator\.android\debug.keystore"
系统会提示输入keystore密码,这个时候输入:Android,系统就会输出类似
CA:A6:F9:56:95:A7:15:08:A4:5C:99:12:4E:62:9F:9F字符串,这就是MD5指纹。
提示:如果系统提示找不到keytool,则需要将java的bin目录添加到环境变量中(这个大家都会把,不会自己百度去),或者使用keytool的绝对路径(在java目录的jdk目录下),比如:
“D:\Program Files\Java\jdk1.6.0_10\bin\keytool.exe” -list -alias androiddebugkey -keystore "
C:\Documents and Settings\Administrator\.android\debug.keystore" -storepass android -keypass android
3.申请Google Map的API KEY
打开 http://code.google.com/intl/zh-CN/android/maps-api-signup.html
复制 认证指纹 (MD5):到下面的 My certificate's MD5 fingerprint
然后点击 Generate Api key
感谢您注册Android地图密钥:
您的密钥是:------------------------------------等你注册了就知道了
此密钥适用于所有使用以下指纹所对应证书进行验证的应用程序:----------------------
下面是一个 xml 格式的示例,帮助您了解地图功能:
<com.google.android.maps.MapView
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:apiKey="0vDJgxtrB71gl2bwGRP2mPrW5jfSxeTno0xDyVw"
/>
二、简单示例
下面的东西都是看mars老师的视频写的,这个工程中有三个类:
MainActivity: 只是在模拟器上显示地图界面
MainActivity1: 在模拟器上显示一个图标,点击后会有弹出框显示
MainActivity2: 在地图中的两个点间画一条直线
MainActivity3:增加了如果系统是否有google map应用的判断,如果没有就进去网页版的google map(无截图,因为模拟器上有google map应用)
截图如下:
三、注意事项
1、使用Android Google Map Api之前必须检测系统中是否安装了Google map 应用,检测方法如下:
protected boolean checkGoogleMap(){
lean isInstallGMap = false;
List<PackageInfo> packs = getPackageManager().getInstalledPackages(0);
for (int i = 0; i < packs.size(); i++) {
PackageInfo p = packs.get(i);
if (p.versionName == null) { // system packages continue;
}
if ("com.google.android.apps.maps".equals(p.packageName)) {
isInstallGMap = true; break;
}
}
return isInstallGMap;
}
2、当检测出系统中没有安装Google map 应用时,可以转向Web版的Google map 来访问,如下:
Intent it = new Intent( Intent.ACTION_VIEW, Uri.parse( "http://ditu.google.cn/maps?hl=zh&mrt=loc&q="+weiduExtra+", "+jingduExtra+""));
startActivity(it);
注意:使用此方法需在AndroidManifest.xml中加入网络访问权限
<uses-permission android:name="android.permission.INTERNET"> </uses-permission>
3、当检测出系统中已经安装Google map 应用时,我们就可以使用Google map api 了,使用方法如下:
1)方法一:
Intent it = new Intent( Intent.ACTION_VIEW, Uri.parse("geo:"+weiduExtra+", "+jingduExtra));
startActivity(it);
注意:使用此方法需在AndroidManifest.xml中加入相应的访问权限
<uses-permission android:name="android.permission. ACCESS_COARSE_LOCATION" />
<uses-permission android:name="android.permission. INTERNET" />
2)方法二:
可以创建一个MapActivity的子类,将MapView显示于其上即可,可以用MapController来控制显示的坐标、地图模式和视野高度,处理起来非常简单。
注意:
A、使用此方法需在AndroidManifest.xml中加入相应的访问权限。
<uses-permission android:name=" android.permission.ACCESS_COARSE_LOCATION" />
<uses-permission android:name=" android.permission.INTERNET" />;
B、你要申请一个自己的apiKey。
C、Mapview是用来显示地图的view, 它也是派生自android.view.ViewGroup。
地图可以以不同的形式来显示出来,如街景模式,卫星模式等,具体方法可以参考:
setSatellite(boolean), setTraffic(boolean), and setStreetView(boolean)
D、MapView只能被MapActivity来创建,这是因为mapview需要通过后台的线程来连接网络或者文件系统,而这些线程要由mapActivity来管理。
E、需要特别说明的一点是,android 1.5中,map的zoom采用了built-in机制,可以通过setBuiltInZoomControls(boolean)来设置是否在地图上显示zoom控件。
F、 MapActivity是一个抽象类,任何想要显示MapView的activity都需要派生自MapActivity。并且在其派生类的onCreate()中,都要创建一个MapView实例,可以通过MapView constructor (then add it to a layout View with ViewGroup.addView(View)) 或者通过layout XML来创建。
示例代码: GoogleMapTest1.rar (58.03 KB, 下载次数: 5) |
|