光輝歲月

导航

 

粗略的做了个地图标点功能

 

首先,去百度注册开发者账号,然后进入到百度地图开放平台

 

 

进入到控制台,

创建浏览器端应用,给个安全域名

然后去开发者文档JavaScript里面找地图展示文档,直接怼上去就行的

 

这个位置秘钥就是刚刚生出的应用ak

/*
    initialLongitude:初始经度
    initialLatitude:初始纬度
    mapLevel:地图显示级别
    coordinateArray:地理坐标数组
    */
    function creatMap(initialLongitude,initialLatitude,mapLevel,coordinateArray){
        // 百度地图API功能
        var map = new BMap.Map("allmap");    // 创建Map实例
        map.centerAndZoom(new BMap.Point(initialLongitude, initialLatitude), mapLevel);  // 初始化地图,设置中心点坐标和地图级别
        //添加地图类型控件
        /* map.addControl(new BMap.MapTypeControl({
            mapTypes:[
                BMAP_NORMAL_MAP,
                BMAP_HYBRID_MAP
            ]}));     */
        map.addControl(new BMap.ScaleControl());
        map.addControl(new BMap.OverviewMapControl());
        
        map.setCurrentCity("上海");          // 设置地图显示的城市 此项是必须设置的
        map.enableScrollWheelZoom(true);     //开启鼠标滚轮缩放
        var points = new Array(coordinateArray.length);
        for(var i = 0;i<points.length;i++){
            (function() {
                var coordinateInfo = eval(coordinateArray[i]);
                //给地图上面标志点
                var point = new BMap.Point(coordinateInfo.checkout_longitude,coordinateInfo.checkout_latitude);
                points[i] = point;
                map.centerAndZoom(point, mapLevel); 
                
                var icon = "${basePath}/images/baidumap/green.png";
                if(coordinateInfo.workorder_status=='3'){
                    icon = "${basePath}/images/baidumap/red.png";
                }
                var myIcon = new BMap.Icon(icon, new BMap.Size(25, 30)); 
                var marker = new BMap.Marker(point,{icon:myIcon});        // 创建标注    
                marker.addEventListener("click", function(){ 
                    var opts = {    
                            width : 370,     // 信息窗口宽度    
                            height: 130,     // 信息窗口高度    
                            title : "服务对象:"+coordinateInfo.client_name  // 信息窗口标题   
                        }    
                    var mesage = "执行者:"+coordinateInfo.staff_name+"</br>地址:"+coordinateInfo.client_address+"</br>开始时间:"+getLocalTime(coordinateInfo.workorder_start_time)+"</br>结束时间:"+getLocalTime(coordinateInfo.workorder_end_time);
                    var infoWindow = new BMap.InfoWindow(mesage, opts);  // 创建信息窗口对象    
                    map.openInfoWindow(infoWindow, point);      // 打开信息窗口    
                }); 
                
                map.addOverlay(marker);
            })();
            
        }
        map.setViewport(points,2000);
        
    }

 

 ok,代码在这儿了,至于for里面的函数,是立即执行某个模块的代码,因为前端函数是异步的,不加会出现闭包问题,这也是从某个前端大佬了解到的,困扰了我一会儿,以上代码仅供参考。

对了,补充一个坑点,demo上面的css地图是100%*100%,如果你的html或者jsp是外部嵌套的,需要指定长宽,不然地图出不来。css小白,不知道怎么去解决,只能这样了

 

posted on 2018-04-09 10:19  光輝歲月  阅读(1534)  评论(1编辑  收藏  举报