
5.3 在Android穿戴设备中使用地图
在Android穿戴设备中可以直接使用Google地图,可以用地图的形式显示位置信息。在接下来的内容中,将详细讲解在Android穿戴设备中使用Google地图的方法。
5.3.1 使用地图前的准备工作
Google地图给人们的生活带来了极大的方便。例如,可以通过Google地图查找商户信息、查看地图和获取行车路线等。Android平台也提供了一个map包(com.google.android.maps),通过其中的MapView就能够方便的利用Google地图的资源来进行编程。在使用前需要预先进行如下设置。
(1)添加maps.jar
在Android SDK中,以JAR库的形式提供了和Google Map有关的API,此JAR库位于“android-sdk-windows\add-ons\google_apis-4”目录之下。要把maps.jar添加到项目中,可以在项目属性中的“Android”栏中指定使用包含Google API的Target作为项目的构建目标,如图5-1所示。

图5-1 在项目中包含Google API
(2)将地图嵌入应用
通过使用MapActivity和MapView控件,可以轻松的将地图嵌入应用程序当中。在此步骤中,需要将Google API添加到构建路径中。方法是在图5-2所示界面中选择“Java Build Path”,然后在Target中选中Google APIs复选框,设置项目中包含Google API。

图5-2 将Google API添加到构建路径
(3)获取Map API密钥
在利用MapView之前,必须先申请一个Android Map API Key。具体步骤如下所示。
(1)找到你的debug.keystore文件,通常位于如下目录:

(2)获取MD5指纹:运行cmd.exe,执行如下命令获取MD5指纹:

例如,笔者机器输入如下命令:

此时系统会提示输入keystore密码,这时候输入android,系统就会输出我们申请的MD5认证指纹,如图5-3所示。

图5-3 获取的认证指纹
注意
因为在CMD中不能直接复制、粘贴使用CMD命令,这样很影响编程效率,所以笔者使用了第三方软件PowerCmd来代替机器中自带的CMD工具。
(3)申请Android map的API Key:
打开浏览器,输入下面的网址:hhttp://code.google.com/intl/zh-CN/android/maps-api-signup.html,如图5-4所示。

图5-4 申请主页
在Google的android map API Key申请页面上输入图5-3中得到的MD5认证指纹,按下“Generate API Key”按钮后即可转到下面这个画面,得到申请的API Key,如图5-5所示。

图5-5 得到的API Key
到此为止,成功获取了一个API Key。
5.3.2 使用Map API密钥的流程
通过上一节的讲解,我们已经申请到了一个Android Map API Key,下面开始讲解使用Map API密钥实现编程的基本流程。
(1)在AndroidManifest.xml中声明权限。
在Anroid系统中,如果程序执行需要读取到安全敏感的项目,那么必须在Android-Manifest.xml中声明相关权限请求,比如这个地图程序需要从网络读取相关数据。所以必须声明android.permission.INTERNET权限。具体方法是在文件AndroidManifest.xml中添加如下代码。

另外,因为maps类不是Android启动的默认类,所以还需要在文件AndroidManifest.xml的application标签中申明要用maps类:

下面是基本的AndroidManifest.xml文件代码:

(2)在文件main.xml中完成布局。
假设要显示杭州的卫星地图,并在地图上方有五个按钮,分别可以放大地图、缩小地图或者切换显示模式(卫星、交通、街景)。即整个界面主要由两个部分组成,上面是一排五个按钮,下面是Map View。
在Android中的LinearLayout是可以互相嵌套的,在此可以把上面五个按钮放在一个子LinearLayout里边(子LinearLayout的指定可以由android:addStatesFromChildren="true"实现),然后再把这个子LinearLayout添加到外面的父LinearLayout里。具体实现代码如下。

(3)完成主Java程序代码首先,主文件的这个类必须继承MapActivity。

接下来看onCreate()函数,其核心代码如下所示。


然后编写缩放按钮的处理代码,具体如下所示。

地图模式的切换由下面代码实现

到此为止,完成了第一个使用Map API的应用程序。