Android Studio高德地图和百度地图获取位置
----吐槽
这几天想给自己项目加个定位系统好获取位置。结果被弄得欲仙欲死。
先是弄了系统原生的定位,只能获取经纬度,虽然获取经纬度后利用这个:
http://api.map.baidu.com/geocoder?output=json&location=23.139,113.024893&ak=esNPFDwwsXWtsQfw4NMNmur1
json数据转换可以直接获取信息,不过还是比较麻烦。(不推荐)所以不说原生获取位置,下面讲百度地图和高德地图
-------------------------百度地图-----------------------
然后就跑去用了百度地图,申请key,获取SHAI,下载SDK包…叭拉叭拉一堆之后,发现定位坐标是null,显示4.9E-324(即定位不到)弄了2天,不是so文件也不是sdk,也不是androidmanifest的问题,最后弄了半天发现不能用模拟器定位(并不是说网上说的什么版本22以上就得动态赋予权限什么的,有在androidManifest那里给权限就行了),用真机运行有时定位得到,有时还不行,可能网络问题。(所以不是很推荐百度地图)
如果想用百度地图的朋友,这是我几天看的文章弄的
首先是百度sdk下载:
http://lbsyun.baidu.com/index.php?title=sdk/download&action#selected=mapsdk_basicmap,mapsdk_searchfunction,mapsdk_lbscloudsearch,mapsdk_calculationtool,mapsdk_radar
建议像我一样不是很会的,就一股脑的把需要都点了,因为代码有些用到的包如果没下会很麻烦,虽然用多少下多少比较好,但是新手还是全下吧
先看这个文章,如果不懂再去下面几篇文章查
http://lbsyun.baidu.com/index.php?title=android-locsdk/guide/key
下载好包之后还要申请key(一个key不要多用)
https://jingyan.baidu.com/article/e73e26c0b5b75124adb6a786.html
申请key的时候会发现他要你SHA1
https://www.jianshu.com/p/86d0546d53f6
(注意发布版SHA1和开发版SHA1不一样,发布版需要用到)
到这里就配置成功了…把下载的sdk导入后变成这样
代码什么的看这里
这个才是重点,代码+配置下面也有
https://blog.youkuaiyun.com/code_better/article/details/54936115
补充一下,之前说过下载sdk最好都下,每个sdk下了东西都不同,有些需要important的,有些jar包里没有,所以这就很坑了,比如这个search,所以建议小伙伴们还是能下的都下,不然可能木有search这个包!
-------------------------高德地图--------------------
最后讲的是高德地图,不得不说,高德地图比百度地图好用(可能百度地图坑踩了太多了),有了之前配置百度地图的经验。
还是得先看高德地图那里的文档说明,了解下怎么配置
https://lbs.amap.com/api/android-sdk/guide/create-project/android-studio-create-project
key申请好,文件配置好,代码弄好就能运行了
效果图:(会Toast位置信息的,没截到而已= =)
https://blog.youkuaiyun.com/zszszszzs/article/details/80918023?utm_source=blogxgwz1
https://blog.youkuaiyun.com/zss1973/article/details/50298981
这2篇是看的高德地图定位的文章
代码就很简单了MainActivity
import android.os.PersistableBundle;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.widget.Toast;
import com.amap.api.location.AMapLocation;
import com.amap.api.location.AMapLocationClient;
import com.amap.api.location.AMapLocationClientOption;
import com.amap.api.location.AMapLocationListener;<