初识高德地图和百度地图

高德地图

高德开放平台(http://lbs.amap.com/)做的还是蛮好的,至少源码下载后可以直接跑通。
要使用高德sdk,首先还是注册用户、申请key,这里只是提一下debug版本的sha1生成,本人用的是as,可在Terminal选项进行命令行操作,步骤如下:
1 、打开cmd,转到路径: C:\Users\Administrator.android
2、 输入命令 keytool -list -v -keystore debug.keystore
3、输入命令 android 回车。
如果只是使用debug版本的话,这个sha1是不变的,可以保存起来,下次直接复制粘贴即可。
这里写图片描述
高德地图官方demo中有2D地图、3D地图、定位地图、导航地图四个工程(没看出2D和3D的区别在哪里,见笑)。官方demo可以直接跑起来,唯一需要我们做的就是根据包名和sha1申请key,否则的话就会报key不正确或过期;如果你随便填一个key,就会报MD5不正确,老老实实申请key吧。

<application
        android:icon="@drawable/ic_launcher"
        android:label="@string/demo_title"
        android:theme="@android:style/Theme.Light" >
        <meta-data
            android:name="com.amap.api.v2.apikey"
            android:value="你的key" />

自己开发地图的话的话需要把sdk(jar包)导入到自己的工程,可以将jar包复制到app module下的libs目录并添加依赖。当然啦,还需要在在manifest文件中配置权限:

<!--用于进行网络定位-->
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
<!--用于访问 GPS 定位-->
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
<!-- 获取运营商信息,用于支持提供运营商信息相关的接口-->
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<!-- 用于访问 wifi 网络信息,wifi 信息会用于进行网络定位-->
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
<!-- 这个权限用于获取 wifi 的获取权限,wifi 信息会用来进行网络定位-->
<uses-permission android:name="android.permission.CHANGE_WIFI_STATE" />
<!--用于访问网络,网络定位需要上网-->
<uses-permission android:name="android.permission.INTERNET" />
<!-- 用于读取手机当前的状态-->
<uses-permission android:name="android.permission.READ_PHONE_STATE" />
<!-- 写入扩展存储,向扩展卡写入数据,用于写入缓存定位数据-->
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />

在实现定位功能时遇到了定位失败10 (定位客户端启动失败。 请检查AndroidManifest.xml文件是否配置了APSService定位服务,官方文档太人性化了),查了下需要在AndroidManifest中添加

此为定位需要的服务,使用2.0以上的定位就需要这个。添加后又报了12 (缺少定位权限。 请在设备的设置中开启app的定位权限),如果编译版本不小于23的话,还要申请运行时权限。
效果图:
这里写图片描述

百度地图

总的来说,百度地图开放平台比高德地图要详细些,但是说的有些乱,一会就把你绕晕了,等着踩坑吧。
注册申请key就不多说了,与高德地图类似。
这里写图片描述
官方demo跑起来还是很顺的,自己开发的时候就要要吐槽下了,需要加上jar和so文件,最后解决办法是找到工程中需要用到那个类和控件,在官方demo中找到该控件按住crtl点进去,看下官方demo使用的哪个jar,然后把官方的jar拷贝到自己的工程。
这里写图片描述
在使用定位功能的时候,通过location.getAddrStr为null,网上搜了下可以通过option.setIsNeedAddress(true)来解决。
还有就是记得打开网络额。
这里写图片描述
貌似比高德地图定位准确些

猜你喜欢

转载自blog.csdn.net/u013795543/article/details/64123245