Android使用JS百度定位+web百度定位
一、先去百度地图api官网申请AK http://lbsyun.baidu.com
1、iosSDK申请
只需要填写个安全码(包名)然后提交
2、Android SDK申请
填写SHA1值(B4:19:CE:70:13:09:14:1E:6C:1A:58:B9:AC:51:D1:C4:AC:D1:88:E5)长的这个样子;具体获取方法因人而异;我是直接找到android.keystore.info这个文件在里面拿的
填写包名
这里需要特别注意的是申请下来的sdk和包名一一对应的,包名不一致不能混用,所以更改签名文件和包名后需要重新获取AK
二、引入 require("cordova!cordova-plugin-geolocation"); (引入方法因人而异)
1、先通过geolocation对象获取经纬度;这里提供两个方法
(这里我遇到了整个app中只有第一次调用这个方法的时候才生效;原因是因为包名改变了但是AK用的之前的所以不能成功调用。真机第一次可以成功获取到地址;chrome科学上网和模拟器中每次都能获取到地址,被误导了就没有考虑包的问题,什么原理能让旧的AK仍然生效)
this.watchID = navigator.geolocation.watchPosition(successCallback, errorCallback, options);// 获取经纬度 navigator.geolocation.getCurrentPosition(successCallback, errorCallback, options);// 获取经纬度
经纬度可以在成功的回调函数中获取
function successCallback(position) { var latitude = position.coords.latitude;// 纬度 var longitude = position.coords.longitude;// 经度 //console.log(longitude + "=" + latitude) }
2、成功获取获取经纬度后调取百度的API获取地址
2.1、web服务API获取地理位置信息(这里安卓AK是用来打包时填写的;这个Ak是调用接口是用的)
符官方文档 :http://lbsyun.baidu.com/index.php?title=webapi/guide/webservice-geocoding-abroad
$.ajax({ url : "http://api.map.baidu.com/geocoder/v2/?callback=renderReverse&location=" + 纬度+ "," + 经度 + "&output=json&pois=1&ak=你的Web端Ak", dataType : 'jsonp', processData : false, type : 'get', success : function(data) { debugger var sCity = data.result.formatted_address;// 城市区县 var sTown = data.result.business;// 镇 var sdetailed = data.result.sematic_description;// 详细地址 // 具体地址定位login var slongadress = sCity + sTown + sdetailed;// 拼接地址 }
2.2 Android SDK获取地址(后续补充)
2.3 服务端 获取地址(后续需要完善的东西挺多另外开了一篇,下面是code实现)