zoukankan      html  css  js  c++  java
  • 百度地图API显示多个标注点带检索框

    通过百度地图的api,可以在地图上显示多个标注点,并给所有的标注点实现了带检索功能的信息框

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml">
    
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    <meta name="viewport" content="initial-scale=1.0, user-scalable=no" />
    <title>地图检索</title>
    <!--css-->
    <link href="style/demo.css" rel="stylesheet" type="text/css" />
    <!--javascript-->
    <script src="scripts/jquery-1.9.1.js" type="text/javascript"></script>
    <script src="scripts/demo.js" type="text/javascript"></script>
    <script type="text/javascript"
        src="http://api.map.baidu.com/api?v=2.0&ak=IDvNBsejl9oqMbPF316iKsXR"></script>
    <script type="text/javascript"
        src="http://api.map.baidu.com/library/SearchInfoWindow/1.5/src/SearchInfoWindow_min.js"></script>
    <link rel="stylesheet"
        href="http://api.map.baidu.com/library/SearchInfoWindow/1.5/src/SearchInfoWindow_min.css" />
    </head>
    <body>
        <div class="demo_main" style=" 70%;height: 90px;margin: 0px auto;">
        
                <div >
                <a href="#"><img src="#" alt="这里是一个Logo"  style=" 20%;height: 10%"/></a>
                <hr/>
                </div>
            
            <fieldset class="demo_content">
                <div style="min-height: 450px;  100%;" id="map"></div>
                <script type="text/javascript">
                    var markerArr = [ {
                        title : "安师大分部",
                        point : "118.384668,31.288999",
                        address : "芜湖市弋江区安徽师范大学",
                        description : "安师大分部位于芜湖市弋江区安师大附近,为Ejob公司分部",
                        tel : "10086"
                    }, {
                        title : "EasyJob总部",
                        point : "118.361707,31.287487",
                        address : "芜湖市弋江区 安徽信息工程学院",
                        description : "Ejob大厦位于芜湖市弋江区鲁港附近,为Ejob公司综合研发及办公总部",
                        tel : "10086"
                    }, {
                        title : "皖医分部",
                        point : "118.36742,31.292764",
                        address : "芜湖市弋江区皖南医学院",
                        description : "皖医分部位于芜湖市弋江区皖医附近,为Ejob公司分部",
                        tel : "10086"
                    }, {
                        title : "商贸分部",
                        point : "118.37414,31.293319",
                        address : "芜湖市弋江区安徽商贸职业技术学院",
                        description : "商贸分部位于芜湖市弋江区商贸附近,为Ejob公司分部",
                        tel : "10086"
                    }, {
                        title : "安机电分部",
                        point : "118.367708,31.287641",
                        address : "芜湖市弋江区安徽机电职业技术学院",
                        description : "安机电分部位于芜湖市弋江区安机电附近,为Ejob公司安分部",
                        tel : "10086"
                    } ];
                    function map_init() {
                        var map = new BMap.Map("map"); // 创建Map实例
                        var point = new BMap.Point(118.373996, 31.287641); //地图中心点
                        map.centerAndZoom(point, 15); // 初始化地图,设置中心点坐标和地图级别。
                        map.enableScrollWheelZoom(true); //启用滚轮放大缩小
                        //地图、卫星、混合模式切换
                        map.addControl(new BMap.MapTypeControl({
                            mapTypes : [ BMAP_NORMAL_MAP, BMAP_SATELLITE_MAP,
                                    BMAP_HYBRID_MAP ]
                        }));
                        //向地图中添加缩放控件
                        var ctrlNav = new window.BMap.NavigationControl({
                            anchor : BMAP_ANCHOR_TOP_LEFT,
                            type : BMAP_NAVIGATION_CONTROL_LARGE
                        });
                        map.addControl(ctrlNav);
                        //向地图中添加缩略图控件
                        var ctrlOve = new window.BMap.OverviewMapControl({
                            anchor : BMAP_ANCHOR_BOTTOM_RIGHT,
                            isOpen : 1
                        });
                        map.addControl(ctrlOve);
                        //向地图中添加比例尺控件
                        var ctrlSca = new window.BMap.ScaleControl({
                            anchor : BMAP_ANCHOR_BOTTOM_LEFT
                        });
                        map.addControl(ctrlSca);
    
                        var point = new Array(); //存放标注点经纬信息的数组
                        var marker = new Array(); //存放标注点对象的数组
                        var info = new Array(); //存放提示信息窗口对象的数组
                        var searchInfoWindow = new Array();//存放检索信息窗口对象的数组
                        for (var i = 0; i < markerArr.length; i++) {
                            var p0 = markerArr[i].point.split(",")[0]; //
                            var p1 = markerArr[i].point.split(",")[1]; //按照原数组的point格式将地图点坐标的经纬度分别提出来
                            point[i] = new window.BMap.Point(p0, p1); //循环生成新的地图点
                            marker[i] = new window.BMap.Marker(point[i]); //按照地图点坐标生成标记
                            map.addOverlay(marker[i]);
                            marker[i].setAnimation(BMAP_ANIMATION_BOUNCE); //跳动的动画
                            //显示marker的title,marker多的话可以注释掉
                            var label = new window.BMap.Label(markerArr[i].title, {
                                offset : new window.BMap.Size(20, -10)
                            });
                            marker[i].setLabel(label);
                            // 创建信息窗口对象
                            info[i] = "<p style=’font-size:12px;lineheight:1.8em;’>"
                                    + "</br>简介:"
                                    + markerArr[i].description
                                    + "</br>地址:"
                                    + markerArr[i].address
                                    + "</br> 电话:" + markerArr[i].tel + "</br></p>";
                            //创建百度样式检索信息窗口对象                       
                            searchInfoWindow[i] = new BMapLib.SearchInfoWindow(map,
                                    info[i], {
                                        title : markerArr[i].title, //标题
                                        width : 290, //宽度
                                        height : 100, //高度
                                        panel : "panel", //检索结果面板
                                        enableAutoPan : true, //自动平移
                                        searchTypes : [ BMAPLIB_TAB_SEARCH, //周边检索
                                        BMAPLIB_TAB_TO_HERE, //到这里去
                                        BMAPLIB_TAB_FROM_HERE //从这里出发
                                        ]
                                    });
                            //添加点击事件
                            marker[i].addEventListener("click", (function(k) {
                                // js 闭包
                                return function() {
                                    //将被点击marker置为中心
                                    map.centerAndZoom(point[k], 18);
                                    //在marker上打开检索信息窗口
                                    searchInfoWindow[k].open(marker[k]);
                                }
                            })(i));
                        }
                    }
                    //异步调用百度js
                    function map_load() {
                        var load = document.createElement("script");
                        load.src = "http://api.map.baidu.com/api?v=2.0&ak=IDvNBsejl9oqMbPF316iKsXR&callback=map_init";
                        document.body.appendChild(load);
                    }
                    window.onload = map_load;
                </script>
            </fieldset>
        </div>
    </body>
    </html>
    map

    可以修改标注点样式,代码如下:

    show image
    var myIcon = new BMap.Icon("images/logo2.png", new BMap.Size(90,53));
    
    marker[i] = new window.BMap.Marker(point[i],{icon:myIcon}); 

  • 相关阅读:
    SSH框架面试题
    创业起步?先收藏这份终极指南
    技术专题之-技术的概述
    技术专题之-技术概述的目录
    晶体管电路学习笔记
    转载 关于小波消失矩的理解
    关于射级跟随器中输出负载加重情况的理解
    小波分解和合成的simulink仿真
    小波变换工程实现原理总结
    小波变换的解释
  • 原文地址:https://www.cnblogs.com/weihuang6620/p/6224901.html
Copyright © 2011-2022 走看看