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实现)

  https://www.cnblogs.com/404code/p/10570849.html

posted @ 2018-09-27 11:15  杜小二  阅读(278)  评论(0编辑  收藏  举报