Java学习者论坛

 找回密码
 立即注册

QQ登录

只需一步,快速开始

手机号码,快捷登录

恭喜Java学习者论坛(https://www.javaxxz.com)已经为数万Java学习者服务超过8年了!积累会员资料超过10000G+
成为本站VIP会员,下载本站10000G+会员资源,购买链接:点击进入购买VIP会员
JAVA高级面试进阶视频教程Java架构师系统进阶VIP课程

分布式高可用全栈开发微服务教程

Go语言视频零基础入门到精通

Java架构师3期(课件+源码)

Java开发全终端实战租房项目视频教程

SpringBoot2.X入门到高级使用教程

大数据培训第六期全套视频教程

深度学习(CNN RNN GAN)算法原理

Java亿级流量电商系统视频教程

互联网架构师视频教程

年薪50万Spark2.0从入门到精通

年薪50万!人工智能学习路线教程

年薪50万!大数据从入门到精通学习路线年薪50万!机器学习入门到精通视频教程
仿小米商城类app和小程序视频教程深度学习数据分析基础到实战最新黑马javaEE2.1就业课程从 0到JVM实战高手教程 MySQL入门到精通教程
查看: 592|回复: 0

开发交流:Mars老师Google Map学习(附源码)

[复制链接]

该用户从未签到

发表于 2011-10-24 09:54:06 | 显示全部楼层 |阅读模式
基于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---&gtreferences--->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)
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|手机版|Java学习者论坛 ( 声明:本站资料整理自互联网,用于Java学习者交流学习使用,对资料版权不负任何法律责任,若有侵权请及时联系客服屏蔽删除 )

GMT+8, 2025-1-11 01:42 , Processed in 0.362107 second(s), 48 queries .

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表