Android 手机地图开发-高德地图问题

 

高德地图地址: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 Map API进行基于AutoNavi地图数据的开发时,首先需要在建立的工程中导入AutoNavi Map API开发包。如:在Eclipse开发环境,选择Add External Jar,进行开发包导入

 

  • 获取签名证书的MD5指纹

要注册一个地图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工具会提示您输入密码。上述措施可防止密码信息被记录到操作历史中带来的泄密风险。

 

以下示例说明如何使用keytool在指定keystore和别名的条件下生成MD5指纹:
$keytool -list, -alias alias_name, -keystore my-release-key.keystore

keytool会提示您输入对应密码。输入正确后,keytool会输出显示MD5指纹.例如:
证书指纹 (MD5): 94:1E:43:49:87:73:BB:E6:A6:88:D7:20:F1:8E:B5:98

最后,得到MD5指纹后,就可以到AutoNavi地图服务进行API密钥注册生成了。

 

  • 获取调试证书的MD5指纹

在开发调试阶段,可以通过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

 

  • 在AutoNavi地图服务注册证书指纹

在获取MD5指纹后,访问如下页面注册证书指纹:
http://code.autonavi.com/key

具体的注册步骤如下:

1.如果没有在AutoNanvi地图服务进行过注册,请先进行注册并登录
2.仔细阅读AutoNavi Map API服务条款,并同意该服务条款
3.粘贴MD5指纹到指定的输入框
4.点选"获取 KEY"按钮

服务器端接受您的请求,根据您提供的MD5指纹生成一个唯一的API密钥,并在新页面中显示生成的结果。拷贝并粘贴API密钥到应用的MapView中。

注意:如果您忘记了自己的API密钥,可以通过选择”我的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"
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值