2.1 问题
需要在地图上为用户显示一个或多个位置。此外,要在同一张地图上显示用户自己的位置。
2.2 解决方案
(API Level 9)
向用户显示地图的最简单方式就是用位置数据创建一个Intent并把它传递给Android系统来启动地图应用程序。另外,Google Play Services库的Google Maps v2库组件提供的Map View和MapActivity可以在应用程序中嵌入地图。
要点:
Google Maps v2是作为Google Play Services库的一部分进行分发的,它在任意平台级别都不是原生SDK的一部分。然而,目标平台为API Level 9或以后版本的应用程序以及Google Play体系内的设备都可以使用此绘画库。
1. 获取API密钥
要开始使用Maps v2,需要创建一个API项目,在该项目内启用Maps v2服务,生成API密钥并包括在应用程序代码中。如果没有API密钥,虽然也可以利用绘图类,但不会向应用程序返回任何地图图块(map tile)。请遵循如下步骤:
(1)进入https://code.google.com/apis/console/,使用你的Google账户登录以访问Google API控制台。
(2)选择Create Project选项,为你的地图建立新的项目。如果已有项目,则可以根据喜好向其中添加Maps v2服务和密钥。在此例中,选择要添加Maps v2的项目。
(3)在导航面板中,选择Services,向下滚动到Google Maps Android API v2并启用该服务。
(4)在导航面板中选择API Access,并且选择Create new Android Key选项。
(5)遵循屏幕上的说明,根据想要使用的应用程序向密钥添加密钥库签名/应用程序包对。在此例中,示例应用程序的包名是com.androidrecipes.mapper,而签名来自开发机器上的调试密钥,通常位于/.android/debug.keystore。
如果在模拟器上测试你的运行代码,模拟器必须使用目标平台为Android 4.3或以后版本的SDK构建,这些版本包含Google API,从而绘图操作可以正常运行。以前版本的SDK捆绑了Map v1 库而不是Google Play Services,因此它们不能用于测试。
如果是通过命令行创建模拟器,目标的名称就是“Google Inc:Google APIs:X”,其中的X指示API的版本。如果在IDE(例如Eclipse)中创建模拟器,目标的命名约定也是类似的:Google APIs(Google Inc.) -X,其中X指示API的版本。
2.满足清单要求
获得了有效的API密钥之后,需要在我们的AndroidManifest.xml文件包括该密钥。下面的代码块必须放在元素内:
<meta-data
android:name="com.google.android.maps.v2.API_KEY"
android:value="YOUR_KEY_HERE" />
此外,Maps v2有一项设备要求,即至少要具备OpenGL ES2.0。我们可以将此要求作为设备特性提出,方法是在元素内添加如下代码块,通常是放在元素的上方:
<!-- Maps v2 requires OpenGL ES 2.0 -->
<uses-feature
android:glEsVersion="0x00020000"
android:required="true" />
最后,Maps v2 需要一组权限才能与Google Play Services通信以及渲染地图图块。因此,我们必须在元素内再添加一个代码块,通常是放在元素的上方:
<!-- 显示地图所需要的权限 -->
<uses-permission android