• 调用百度地图 API 移动地图时 maker 始终在地图中间 并根据maker 经纬度 返回地址


    1.项目要求如题目

    2.废话不说-----代码如下:

    <html>
    <head>
        <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
        <meta name="viewport" content="initial-scale=1.0, user-scalable=no" />
        <style type="text/css">
            body, html,#allmap { 100%;height: 500px;overflow: hidden;margin:0;font-family:"微软雅黑";}
        </style>
        <script type="text/javascript" src="http://api.map.baidu.com/api?v=2.0&ak=DD279b2a90afdf0ae7a3796787a0742e"></script>
        <title>浏览器定位</title>
    </head>
    <body>
        <div id="allmap"></div>
        <div style="auto;height:55px;'"> 
            <input type="text" id="locate" style="background-color:pink;" placeholder="地址"/ >
            <input type="button" value="确定" style="background-color:blue;"/>
        </div>
    </body>
    </html>
    <script type="text/javascript">
        // 百度地图API功能
        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){
            var mk = new BMap.Marker(r.point);
            if(this.getStatus() == BMAP_STATUS_SUCCESS){
                            map.addOverlay(mk);
                map.panTo(r.point);
                map.addEventListener('ondragging', function(){
                      mk.setPosition(map.getCenter());
              });
              //   地图停止移动后获取mk经纬度
              map.addEventListener('moveend',function(){
                var pos = mk.getPosition();
                console.log(pos);  
                 // 创建地址解析对象
                var geoc = new BMap.Geocoder(); 
                geoc.getLocation(pos, function(rs){
                var addComp = rs.addressComponents;
                alert(addComp.province + ", " + addComp.city + ", " + addComp.district + ", " + addComp.street + ", " + addComp.streetNumber);
            });  
                
              })
              //console.log(pos);
                alert('您的位置:'+r.point.lng+','+r.point.lat);
            }
            else {
                alert('failed'+this.getStatus());
            }    
            
            
           
        },{enableHighAccuracy: true})
        //关于状态码
        //BMAP_STATUS_SUCCESS    检索成功。对应数值“0”。
        //BMAP_STATUS_CITY_LIST    城市列表。对应数值“1”。
        //BMAP_STATUS_UNKNOWN_LOCATION    位置结果未知。对应数值“2”。
        //BMAP_STATUS_UNKNOWN_ROUTE    导航结果未知。对应数值“3”。
        //BMAP_STATUS_INVALID_KEY    非法密钥。对应数值“4”。
        //BMAP_STATUS_INVALID_REQUEST    非法请求。对应数值“5”。
        //BMAP_STATUS_PERMISSION_DENIED    没有权限。对应数值“6”。(自 1.1 新增)
        //BMAP_STATUS_SERVICE_UNAVAILABLE    服务不可用。对应数值“7”。(自 1.1 新增)
        //BMAP_STATUS_TIMEOUT    超时。对应数值“8”。(自 1.1 新增)
        
    </script>

    3.  如果觉得本文有用,欢迎大赏---

  • 相关阅读:
    window安装配置 zookeeper 单机模式
    Gradle安装配置
    Window安装配置Redis
    springBoot2.0 配置@ControllerAdvice 捕获异常统一处理
    java中的String,StringBuffrer,Stringbuilder的区别
    springBoot2.0 配置shiro实现权限管理
    Vue双向绑定实现原理demo
    springBoot2.0 配置 mybatis+mybatisPlus+redis
    vue-cli3.0 使用图形化界面创建和管理项目
    vue-cli3.0 脚手架搭建项目
  • 原文地址:https://www.cnblogs.com/vali/p/6523302.html
Copyright © 2020-2023  润新知