• 高德地图点击查询信息定位到点+异步加载点+点击点显示信息窗口


    一:配置地图  

         根据官方步骤申请key

        可以异步或者同步调用地图,此处Wie同步

       html

    •  <div id="container" tabindex="0"></div>

     js

     //设置中心位置,显示当前城市的中心点
        var map = new AMap.Map('container', {
            resizeEnable: true,
            //center: [117.031479, 36.66314],//定位的济南//center缺省则根据IP自动获取中心
            zoom: 11
        });
    

      不设置center可以根据ip自动获取中心位置

    二:配置地图标记点

       

        
        var style = new AMap.Icon({
            size: new AMap.Size(30, 40),  //图标大小
            image: "img/map_icon.png",//设置点图标图像
            imageSize: new AMap.Size(25, 28),
            imageOffset: new AMap.Pixel(0, 0)
        });
        //显示窗口
       var infoWindow = new AMap.InfoWindow({
            draggable: true,  //是否可拖动
            content: "",
            isCustom: true,
            //使用自定义窗体
            offset: new AMap.Pixel(16, -15) //基点指向marker的头部位置
        });
        
            var markerList = [];//存放地图的点信息,方便点击时加载
    
            //清除地图上的信息
            map.remove(markers);
            map.clearInfoWindow();
    
            $.post('ashx/dealHandler.ashx',
                {
                    action: "getPoints",
                    page: page,//当前页码
                    pageSize: pageSize,//每页页码(此处取全局参数)
                    city: $("#city").val(),
                    searchText: $(".ipt_search").val()
                },
                function (result) {
                    if (result.total > 0) {//用模板加载信息
                        var ht = template("tmp-list1",
                            {
                                Data: result.rows
                            });
                        $("#project_item").empty().append(ht);//模板赋值
                        $("#countAll").text(result.total);
                        //获取分页数据
                        GetLayuiPageList(result.total, page, pageSize);
                      
                       //左侧查询信息的点击事件,要在绘制完成后加载
                        $('.dz_text').on('click', function () {
    
                            var idStr = this.dataset.id;
                            markerList.map(function(value,index){
                                 
                                if (value.id == idStr) {
                                   //获取点击点的marker
                                    var tpmk = value.marker_o;
                                    if (tpmk) {
                                        //触发点击
                                        tpmk.emit('click', { target: tpmk });
                                        //设置中心点和缩放比例
                                        map.setZoomAndCenter(15, 
                                        tpmk.getPosition());
                                    }
                                }
                            })
                        })
                        //在地图标记点
                        var marker;
                        var firstlng,firstlat;
                        for (var i = 0 ; i < result.rows.length; i++) {
                            if (i == 0) {
                                firstlng = result.rows[i].ca_lng;
                                firstlat = result.rows[i].ca_lat;
                            }
                            var data = [result.rows[i].ca_lng, result.rows[i].ca_lat];
                            marker = new AMap.Marker({ map: map, position: data, zIndex: 11, icon: style });
                            marker.setMap(map);
                            marker.ca_info_id = result.rows[i].ca_info_id;
                            marker.ca_info_name = result.rows[i].ca_info_name;
                            marker.ca_info_address = result.rows[i].ca_info_address;
                            marker.ca_info_phone = result.rows[i].ca_info_phone;
    //添加点击监听事件 AMap.
    event.addListener(marker, 'click', setmarkerclick);
    marker.emit(
    'click', { target: marker }); var vv = new markerStruct(); vv.id = result.rows[i].ca_info_id; vv.marker_o = marker; markerList.push(vv); markers.push(marker); }

    //for-end //自适应多个标记点 map.setFitView(); } else { $("#project_item").empty().append("");//模板赋值 $("#countAll").text("0"); //获取分页数据 GetLayuiPageList(0, page, pageSize); } }, 'json');



    //点击事件,显示窗口
      function setmarkerclick(e) {
            
            infoWindow.setContent("<div name='zt_min_box'class='zt_min_box'><h3 class='map_bt'>" + e.target.ca_info_name + "</h3>" +
                                                    "<div class='map_text'><span>地址:" + e.target.ca_info_address + "</span>" +
                                                    "<span>电话:" + e.target.ca_info_phone + "</span>" +
                                                    "<span><a class='yangshi' href='carrierDetail.aspx?carrierid=" + e.target.ca_info_id + "'>详细信息</a></span>"
                                                    +"</div><a href='#'onclick="javascript:turnoff('zt_min_box')" class='close'>关闭</a></div><div class='tag-boder'><div class='tag'></div></div> ");
            infoWindow.open(map, e.target.getPosition());
        }
        //layui分页通用封装
        //count:总页数 curr: 起始当前页 limit:每页显示条数
        function GetLayuiPageList(count, curr, limit) {
            layui.use(['laypage', 'layer'], function () {
                var laypage = layui.laypage, layer = layui.layer;
                laypage.render({
                    elem: 'pagination',//分页存放的容器Id 注:不需要"#"
                    count: count,
                    theme: '#1E9FFF',
                    limit: limit,
                    curr: curr,
                    //first: '首页',
                    //last: '尾页',
                    prev: '<em>←</em>',
                    next: '<em>→</em>',
                    layout: [ 'prev', 'page', 'next'],
                    jump: function (obj, first) {
                        //非首次加载处理
                        if (!first) {
                            GetProjectInfoList(obj.curr);
                        }
    
                    }
                });
    
            });
    
        }

  • 相关阅读:
    Vue.js依赖收集
    Vue.js响应式原理
    详解.Net 如何上传自己的包到Nuget平台以及如何使用Nuget包管理器
    利用docker容器运行.net core webapi
    wpf mvvm datagrid DataGridTemplateColumn的绑定无效的可能原因之一!
    算法之A星算法(寻路)
    Python 学习日记 第一天
    Python 学习日记 第三天
    Python 学习日记 第二天
    再做一题,2013616更新
  • 原文地址:https://www.cnblogs.com/janeaiai/p/10541680.html
Copyright © 2020-2023  润新知