高德地图地址:http://code.autonavi.com
示例程序及SDK下载地址如何获取AutoNavi MAP API密钥
AutoNavi提供的地图通过MapView对象进行显示。MapView对象显示的地图下载自AutoNavi地图服务。在您可以正常使用 AutoNavi地图数据之前,您必须进行注册登记,同意AutoNavi服务条款,并提供您的MD5指纹证书。对于每个已注册的MD5指纹证 书,AutoNavi地图服务将为您提供一个地图API密钥 -- 一个字母数字字符串,它唯一标识您和您的证书。您需要在MapView对象中存储API密钥。这样,当MapView对象请求地图数据时,服务器可以判定 您已注册,并为您提供地图数据。
对于获取API密钥的详细步骤,请参见如何获取一个API密钥。
如果您的MapView中没有存储有效的API密钥,应用程序仍然可以编译并运行,但MapView将无法显示地图数据。因此,请在开发应用程序的一开始,就先注册一个API密钥。
API密钥的注册是免费的,几分钟即可完成。
什么是签名证书
在开发阶段,您可以通过SDK工具注册生成一个调试API密钥(Debug Key)。
在准备发布前,您需要使用签名证书重新生成API密钥。然后用这个API密钥替换应用中MapView的调试API密钥注意:每次您更新应用中的签名证书时,请记得使用更新的证书重新生成API密钥
如何获取一个API密钥
AutoNavi地图通过MapView对象进行显示。MapView对象显示的地图下载自AutoNavi地图服务。在您可以正常使用 AutoNavi地图数据之前,您必须进行注册登记,同意AutoNavi服务条款,并提供您的MD5指纹证书。对于每个已注册的MD5指纹证 书,AutoNavi地图服务将为您提供一个地图API密钥 -- 一个字母数字字符串,它唯一标识您和您的证书。您需要在MapView对象中存储API密钥。这样,当MapView对象请求地图数据时,服务器可以判定 您已注册,并为您提供地图数据。
获取的地图API密钥有两种:
一种是调试API密钥(Debug Key),供开发应用程序时调试使用,使用调试证书的MD5指纹生成。
另一种是发布API密钥(Release Key),在应用程序正式发布时使用,使用签名证书的MD5指纹生成对于多个应用程序,可以申请多个API密钥,每个MapView中引用的API密钥要与该应用程序的签名证书一致。
总之,在MapView中引用API密钥需要注意如下要点:
1.要正确显示MapView地图数据,需要注册生成一个API密钥
2.每个地图API密钥唯一的与一个MD5指纹证书相关联
3.每个MapView必须引用一个API密钥,并且这个密钥要由该应用程序的发布签名证书生成
4.一个API密钥可应用在该应用程序的所有MapView对象中
5.可以根据您的开发人员情况注册多个证书
6.可以在开发阶段使用调试证书的MD5指纹生成调试API密钥,在正式发布时使用签名证书的MD5指纹生成发布API密钥
在使用AutoNavi Map API进行基于AutoNavi地图数据的开发时,首先需要在建立的工程中导入AutoNavi Map API开发包。如:在Eclipse开发环境,选择Add External Jar,进行开发包导入
要注册一个地图API密钥,需要您提供应用程序签名证书的MD5指纹。在进行注册前,请先使用keytool生成MD5指纹。
首先,需要确定在发布时使用哪些签名证书,并确保这些签名证书包含在keystore的路径中
接下来,运行keytool,使用-list, -alias, -keystore选项。下表列出了对应选项及说明
Keytool 工具参数 | 参数说明 | |
-list | 该参数列出一个证书的MD5指纹 | |
-keystore <keystore-name>.keystore | 该参数指定目标keystore文件的名称 | |
-storepass <password> | 该参数作为Keystore文件的密码 为保障信息安全性,请您仅在确认的安全计算机环境下使用此参数。不包含此参数,Keytool工具会提示您输入密码。上述措施可防止密码信息被记录到操作历史中带来的泄密风险。 | |
-alias <alias_name> | Key的别名 | |
-keypass <password> | 该参数作为KEY的密码 |
以下示例说明如何使用keytool在指定keystore和别名的条件下生成MD5指纹:
$keytool -list, -alias alias_name, -keystore my-release-key.keystorekeytool会提示您输入对应密码。输入正确后,keytool会输出显示MD5指纹.例如:
证书指纹 (MD5): 94:1E:43:49:87:73:BB:E6:A6:88:D7:20:F1:8E:B5:98最后,得到MD5指纹后,就可以到AutoNavi地图服务进行API密钥注册生成了。
在开发调试阶段,可以通过SDK工具生成调试API密钥(Debug Key)。在开发结束正式发布前,再获取正式的发布API密钥(Release Key)。
要生成调试API密钥,首先需要获得调试证书MD5指纹。默认情况下,构建工具(Build Tools)会在当前AVD目录中创建调试keystore。不同的平台,AVD目录的位置也不相同:
Windows Vista: C:\Users\<user>\.android\debug.keystore
Windows XP: C:\Documents and Settings\<user>\.android\debug.keystore
OS X and Linux: ~/.android/debug.keystore如果您使用Elicpse/ADT,当您不太确定具体位置时,可以通过选择 Windows > Prefs > Android > Build来得到完整的路径。然后通过拷贝粘贴的方式找到指定位置。
一旦知道keystore的位置,就可以通过keytool获得调试MD5指纹:
$keytool -list -alias androiddebugkey -keystore <path_to_debug_keystore>.keystore -storepass android -keypass android
在获取MD5指纹后,访问如下页面注册证书指纹:
http://code.autonavi.com/key具体的注册步骤如下:
1.如果没有在AutoNanvi地图服务进行过注册,请先进行注册并登录
2.仔细阅读AutoNavi Map API服务条款,并同意该服务条款
3.粘贴MD5指纹到指定的输入框
4.点选"获取 KEY"按钮服务器端接受您的请求,根据您提供的MD5指纹生成一个唯一的API密钥,并在新页面中显示生成的结果。拷贝并粘贴API密钥到应用的MapView中。
注意:如果您忘记了自己的API密钥,可以通过选择”我的API申请”找回。
获得地图API密钥后,需要将API密钥添加到应用程序的MapView对象中,这样地图服务器才会允许地图数据的下载。
对于通过XML布局文件生成的MapView对象,需要添加对API密钥属性的声明 -- android:apiKey。举例如下:
<com.autonavi.mapapi.MapView
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:enabled="true"
android:clickable="true"
android:apiKey="example_Maps_ApiKey_String"
/>对于通过代码生成的MapView对象,需要在构造函数中,传入API密钥值。举例如下:
mMapView = new MapView(this, "example_Maps_ApiKey_String");更多关于MapView的信息,请参见MapView的接口说明文档。
如何在Mapview 布局( LayOut ) 文件中添加userAgent属性
- 什么是userAgent: userAgent属性主要用于Map与手机的适配。如有的设备需要高分辨率或小字体的地图。
- l 何时使用userAgent: 对大多数设备而言,API的使用者不需设置此属性。这时系统缺省的userAgent为android。Autonavi 会根据不同的设备,及时更新所支持的userAgent。请访问Autonavi开发网站(http://code.autonavi.com/ ),得到更多信息。
- 如何设置userAgent: 应用程序需要在资源文件的values目录下添加attrs.xml, 并加入如下行:
<?xml version="1.0" encoding="utf-8" ?>
<resources>
<declare-styleable name=" attr-name-you-choose">
<attr name="userAgent" format="string" />
</declare-styleable>
</resources>
上述, <declare-styleable name=" attr-name-you-choose ">中的name值可任选。
而 <attr name="userAgent" format="string" /> 中的name值必须为userAgent。
- 最后,需要在Mapview的布局( LayOut )文件中添加此属性:
<com.autonavi.mapapi.MapView android:id="@+id/atmapsView" android:layout_width="fill_parent"
android:layout_height="fill_parent" android:clickable="true"
android:apiKey="9B44AFD9CA974AA0AD806B343356084E455574DCF56DFD39709C29535EE1089A07AC124066507C89"
attr-name-you-choose:userAgent="android"
/>
- 对于像素值低于10万以下的低分辨率手机,userAgent属性应设置为:attr-name-you-choose:userAgent="androidL"