• 百度地图通过地址检索定位地图、通过点击位置获取经纬度、详细地址、城市码


    先看效果:

     实现代码:

    html:

    <div class="select_address">
              <div id="l-map"></div>
              <div id="r-result">地址检索:&nbsp;<input type="text" id="suggestId" value=""/></div>
              <div id="r-address">详细地址:&nbsp;<input type="text" id="addressId" value=""/></div>
              <div id="searchResultPanel" style="border:1px solid #C0C0C0;150px;height:auto; display:block;"></div>
    </div>

    css

    .select_address{
        // display: none;
        position: absolute;
        padding: 5%;
        width: 100%;
        height: 100%;
        left: 0;
        top: 0;
        background-color: rgba(0, 0, 0, 0.6);
        color: white;
        #r-result{
          position: absolute;
          top: 50px;
          left: 5%;
          width: 90%;
          height: 50px;
          // border:1px solid #fff;
        }
        #r-address{
          position: absolute;
          top: 100px;
          left: 5%;
          width: 90%;
          height: 50px;
          // border:1px solid #fff;
        }
        #suggestId{
          color: #fff;
          border: 1px solid #fff;
          width: 90%;
          height: 30px
        }
        #addressId{
          color: #fff;
          border: 1px solid #fff;
          border-top: none;
          border-left: none;
          border-right: none;
          width: 90%;
          height: 30px
        }
        #l-map{
          height: 700px;
          width: 90%;
          position: absolute;
          top: 150px;
        }
        #searchResultPanel{
          position: absolute;
          width: 350px;
          top: 680px;
        }
    
      }

    js:

    // 百度地图API功能
        function G(id) {
          return document.getElementById(id);
        }
    
        var map = new BMap.Map("l-map");
        map.centerAndZoom("北京",12);                   // 初始化地图,设置城市和地图级别。
        map.enableScrollWheelZoom(true);
    
        var ac = new BMap.Autocomplete(    //建立一个自动完成的对象
          {"input" : "suggestId"
          ,"location" : map
        });
    
        ac.addEventListener("onhighlight", function(e) {  //鼠标放在下拉列表上的事件
        var str = "";
          var _value = e.fromitem.value;
          var value = "";
          if (e.fromitem.index > -1) {
            value = _value.province +  _value.city +  _value.district +  _value.street +  _value.business;
          }    
          str = "FromItem<br />index = " + e.fromitem.index + "<br />value = " + value;
          
          value = "";
          if (e.toitem.index > -1) {
            _value = e.toitem.value;
            value = _value.province +  _value.city +  _value.district +  _value.street +  _value.business;
          }    
          str += "<br />ToItem<br />index = " + e.toitem.index + "<br />value = " + value;
          G("searchResultPanel").innerHTML = str;
        });
    
        var myValue;
        ac.addEventListener("onconfirm", function(e) {    //鼠标点击下拉列表后的事件
        var _value = e.item.value;
          myValue = _value.province +  _value.city +  _value.district +  _value.street +  _value.business;
          map.centerAndZoom(myValue,19);
          G("searchResultPanel").innerHTML ="onconfirm<br />index = " + e.item.index + "<br />myValue = " + myValue;
          
          setPlace();
        });
    
        function setPlace(){
          map.clearOverlays();    //清除地图上所有覆盖物
          function myFun(){
            var pp = local.getResults().getPoi(0).point;    //获取第一个智能搜索的结果
            map.centerAndZoom(pp, 18);
            map.addOverlay(new BMap.Marker(pp));    //添加标注
          }
          var local = new BMap.LocalSearch(map, { //智能搜索
            onSearchComplete: myFun
          });
          local.search(myValue);
        };
    
        //输入框回车事件   以当前输入框中内容为中心点定位地图
        $('#suggestId').bind('keydown', function (event) {
          var event = window.event || arguments.callee.caller.arguments[0];
          if (event.keyCode == 13){
            map.centerAndZoom(this.value, 18);
          }
        });
    
    
        
    
        var lngX='',latY='';
        //点击地图获取经纬度  并且根据经纬度反地理编码 获取城市码citycode
        map.addEventListener("click",function(e){
          console.log(e.point)
          lngX = e.point.lng;
          latY = e.point.lat;
    
    
          //根据经纬度获取地址详细信息
          var gc = new BMap.Geocoder();
          var new_point= new BMap.Point(e.point.lng,e.point.lat);
          gc.getLocation(new_point, function(rs){
            var addComp = rs.addressComponents;
            //获取详细的地址,精确到街道的名称
            var  addrname = addComp.city + addComp.district + addComp.street + addComp.streetNumber;
            var lbs_point,address;
             if (rs.surroundingPois.length > 0) {
                lbs_point = rs.surroundingPois[0].point.lng+","+rs.surroundingPois[0].point.lat;
                address =  rs.surroundingPois[0].address;
              } else {
                lbs_point = rs.point.lng+","+rs.point.lat;
                address = rs.address;
              }
            console.log(rs)
            console.log(addrname)
            console.log(address)
            $("#addressId").val(address);
    
          })
    
    
          //根据经纬度获取城市编码
          $.ajax({
            url:'http://api.map.baidu.com/reverse_geocoding/v3/?ak=Yo8oGhNGslHc4B8Qs8EWI4BvU3Qt4Zla&output=json&coordtype=wgs84ll&location='+latY+','+lngX,
            dataType: 'jsonp',
            callback: 'BMap._rd._cbk43398',
            success: function(res) {
                console.log(res);
                var result = res.result;
                var  addressComponent = result.addressComponent;
                var   adcode = addressComponent.adcode
            } ,
            error:function(){
    
            }
      });
    });
  • 相关阅读:
    Go-结构体,结构体指针和方法
    jpa报错object references an unsaved transient instance
    vue的$nextTick
    springboot里面的缓存注解
    X linux上安装sql developer
    X Oracle中RegExp_Like 正则表达式基本用法
    X Linux 安装MySql启动Can't locate Data/Dumper.pm in @INC
    X Centos7下NFS服务器搭建及客户端连接配置
    X grid安装前检查报PRVE-0426:/dev/shm less than the require
    1743. 从相邻元素对还原数组 力扣每日一题2021/7/25
  • 原文地址:https://www.cnblogs.com/dancer0321/p/14061284.html
Copyright © 2020-2023  润新知