• 百度地图JavaScript API获取用户当前经纬度和详细地理位置,反之通过详细地理位置获取当前经纬度


    前言:

      前段时间刚好使用了百度地图的js api定位获取用户当前经纬度并获取当前详细位置和通过当前用户详细地理位置换取用户当前经纬度坐标的功能,为了方便下次找起来方便一些自己在这里记录一下,希望也能够帮助到有需要的童鞋们!

    解决方案:

    引入JavaScript API v2.0 SDK

    1
    <script type="text/javascript" src="http://api.map.baidu.com/api?v=2.0&ak=您的密钥"></script>

    在页面中定义一个以ID为allmap的DIV标签:

    <div id="allmap"></div>

    避免页面中出现:

    1
    Uncaught TypeError: Cannot read property 'gc' of undefined

    通过SDK 辅助定位获取坐标,然后在获取当前用户详细地址

    复制代码
    <script type="text/javascript">
        var map = new BMap.Map("allmap");//创建Map实例,注意页面中一定要有个id为allmp的div
        var point = new BMap.Point(116.331398,39.897445);//创建定坐标
        map.centerAndZoom(point,12);//// 初始化地图,设置中心点坐标和地图级别
    
        var geolocation = new BMap.Geolocation();
        var gc = new BMap.Geocoder();//创建地理编码器
        // 开启SDK辅助定位
        geolocation.enableSDKLocation();
        geolocation.getCurrentPosition(function(r){
            if(this.getStatus() == BMAP_STATUS_SUCCESS){
                var mk = new BMap.Marker(r.point);
                map.addOverlay(mk);
                map.panTo(r.point);
                alert('您的位置:' + r.point.lng + ',' + r.point.lat);
    
                var pt = r.point;   
                map.panTo(pt);//移动地图中心点
                //alert(r.point.lng);//X轴
                //alert(r.point.lat);//Y轴 
     
                gc.getLocation(pt, function(rs){    
                    var addComp = rs.addressComponents;
                    //alert(addComp.city);
                   alert(addComp.province + addComp.city + addComp.district + addComp.street + addComp.streetNumber);    
                });  
    
            }
            else {
                alert('failed'+this.getStatus());
            }        
        });
    </script>
    复制代码

    通过浏览器定位获取当前经纬度:

    复制代码
    <script type="text/javascript">
    var map = new BMap.Map("allmap");
    var point = new BMap.Point(116.331398,39.897445);
    map.centerAndZoom(point,12);
    
    var geolocation = new BMap.Geolocation();
    geolocation.getCurrentPosition(function(r){
        if(this.getStatus() == BMAP_STATUS_SUCCESS){
            var mk = new BMap.Marker(r.point);
            map.addOverlay(mk);
            map.panTo(r.point);
            alert('您的位置:'+r.point.lng+','+r.point.lat);
        }
        else {
            alert('failed'+this.getStatus());
        }        
    });
    </script>
    复制代码

    ip定位获取当前所在城市

    复制代码
    <script type="text/javasript">
    var map = new BMap.Map("allmap");
    var point = new BMap.Point(116.331398,39.897445);
    map.centerAndZoom(point,12);
    
    function myFun(result){
        var cityName = result.name;
        map.setCenter(cityName);
        alert("当前定位城市:"+cityName);
    }
    var myCity = new BMap.LocalCity();
    myCity.get(myFun); 
    </script>
    复制代码

    通过详细地理位置换取当前用户经纬度坐标

    http://api.map.baidu.com/geocoder/v2/?address=长沙市&output=json&ak=您的密钥

    我使用的是ajax请求数据,注意假如dataType为json时会出现跨域问题,最终我使用的是jsonp请求就解决了:

    json和jsonp之间的区别:https://www.cnblogs.com/strugglion/p/5929821.html

    复制代码
    $.ajax({
    url:"http://api.map.baidu.com/geocoder/v2/?address="+city+"&output=json&ak=您的密钥",
    dataType:'jsonp',
    processData: false, 
    type:'get',
    success:function(data){
    console.log(data);
    if (data.status==0) {
    console.log("纬度:"+data.result.location.lat+"经度:"+data.result.location.lng);
    }
    },
    error:function(XMLHttpRequest, textStatus, errorThrown) {
    console.log(XMLHttpRequest.status);
    console.log(XMLHttpRequest.readyState);
    console.log(textStatus);
    }});
    复制代码

    返回json格式的响应数据:

    1
    {"status":0,"result":{"location":{"lng":112.94547319535288,"lat":28.23488939994364},"precise":0,"confidence":12,"comprehension":100,"level":"城市"}}
  • 相关阅读:
    Java面向对象练习输出水仙花
    Java面向对象练习学生信息输出
    java面线对象练习时钟
    java面向对象存取款
    0516Java面向对象求面积练习
    有一分数序列:2/1,3/2,5/3,8/5,13/8,21/13...求出这个数列的前20项之和。
    0516编写西游记人物类
    0514练习
    仓鼠找sugar
    NOIP2018旅行
  • 原文地址:https://www.cnblogs.com/dancer0321/p/14293617.html
Copyright © 2020-2023  润新知