亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 編程 > JavaScript > 正文

基于OL2實現百度地圖ABCD marker的效果

2019-11-20 11:29:42
字體:
來源:轉載
供稿:網友

本文概述:

上文中提到了在Arcgis for JS中實現百度地圖ABCD的marker效果,在本文,講述如何在OpenLayers2中實現類似的效果。

效果圖展示如下:

為直觀期間,先將效果貼出來。

聯動展示

思路:

1、列表與地圖的互動

鼠標經過列表時,修改列表圖標,并根據列表返回的值在地圖上繪藍色的marker;鼠標移出,修改列表圖標為紅色,清空地圖marker圖層。

關鍵代碼:

title.on("mouseover",function(){   var i = $(this).attr("i");   $("#img"+i).attr("src","img/blue.png");   var data = $(this).data("attr");   var hpt = new OpenLayers.LonLat(data.x,data.y);   var hicon = new OpenLayers.Icon('img/blue.png',size,offset);   hMarker = new OpenLayers.Marker(hpt,hicon);   markerLyr.addMarker(hMarker);   showName(hpt,data.name,"item-label-name"); }); title.on("mouseout",function(){   var i = $(this).attr("i");   $("#img"+i).attr("src","img/red.png");   markerLyr.removeMarker(hMarker);   hlabelLyr.clear(); }); title.on("click",function(){   var data = $(this).data("attr");   showInfowindow(data.name,data.desc); }); 

2、地圖與列表的互動

鼠標經過地圖紅色的marker時,修改對應列表圖標,并將紅色 marker的圖片換成藍色的;鼠標移出,修改對應列表圖標,并修改marker為紅色。

關鍵代碼:

marker.events.register("click", feature, function(e){   var data = e.object.attr;   showInfowindow(data.name,data.desc); }); marker.events.register("mouseover", feature, function(e){   map.layerContainerDiv.style.cursor = "pointer";   var id= e.object.id;   $("#img"+id).attr("src","img/blue.png");   $("#li"+id).css("background","#f2f2f2");   var data = e.object.attr;   var hpt = new OpenLayers.LonLat(data.x, data.y);   showName(hpt,data.name,"item-label-name-map"); }); marker.events.register("mouseout", feature, function(e){   map.layerContainerDiv.style.cursor = "url("     + OpenLayers.Util.getRootPath()     + "img/pan.cur),default";   var id= e.object.id;   $("#img"+id).attr("src","red.png");   $("#li"+id).css("background","#ffffff");   hlabelLyr.clear(); }); markerLyr.addMarker(marker); var label = new OpenLayers.Label(pt,i+1,"item-label"); labelLyr.add(label); 

3、地圖上的1,2,3,4...等數字是一個label圖層,不參與聯動;

4、數據以JSON的形式傳遞,在本實例中,根據地圖的四至動態生成的,如下:

function getRandomXY(){   var json = new Array();   for(var i=0;i<8;i++){     var w = bounds.getWidth();     var h = bounds.getHeight();     var x = Math.random() * w + bounds.left;     var y = Math.random() * h + bounds.bottom;     json.push({       id:i,       name:"name"+i,       desc:"this is the name"+i,       x:x,       y:y     })   }   return json; }

完整代碼如下:

<!DOCTYPE html> <html> <head lang="en">   <meta charset="UTF-8">   <title>openlayers map</title>   <link rel="stylesheet" type="text/css" href="http://localhost/olapi/theme/default/style.css"/>   <style>     html, body, #map{       padding:0;       margin:0;       height:100%;       width:100%;       overflow: hidden;       font-size: 12.5px;       font-family:"宋體"     }     .item-list{       position: absolute;       top:100px;       left: 20px;       z-index: 999;       border: 1px solid #ccc;       width: 200px;       background: #fff;     }     .list-close{       background: url("img/panel_tools.png");       width: 16px;       height: 16px;       float: right;       margin: 3px 3px;       background-position: -16px 0px;     }     .list-close:hover{       cursor: pointer;     }     .list-title{       background: #009dda;       color: #fff;       padding: 5px 8px;       font-weight: bold;     }     ul{       list-style: none;       margin: -0px 0;     }     ul li{       border-bottom: 1px dotted #eee;       margin-left: -40px;       margin-top: 5px;       position: relative;     }     ul li:hover{       background: #f2f2f2;     }     .item{       padding: 2px 5px;     }     .item:hover{       cursor: pointer;     }     .item-num{       position: absolute;       top: 4px;       left: 12px;       color:#fff;       font-size: 15px;       font-weight: bold;     }     .item-title{       float: right;       font-weight: bold;       margin-right: 10px;     }     .item-content{       padding: 3px 5px;     }     .item-detail{       margin: 3px 5px;       float: right;     }     .item-detail:hover{       text-decoration: underline;       color: #01A4F8;       cursor: pointer;     }     .item-label{       color:#fff;       font-size: 15px;       font-weight: bold;       margin-top: 2px;       margin-left: 7px;     }     .item-label-name,.item-label-name-map{       border:1px solid #a6c9e2;       background: #fff;       padding: 3px 5px;       font-size: 12px;       margin-top: 23px;       margin-left: 15px;       border-radius: 5px;     }     .item-label-name-map{       margin-left: 25px;     }   </style>   <!--引入jquery 庫 -->   <script type="text/javascript" src="http://localhost/olapi/OpenLayers.js"></script>   <script type="text/javascript" src="http://localhost/olapi/lib/OpenLayers/Lang/zh-CN.js"></script>   <script src="http://localhost/jquery/jquery-1.8.3.js"></script>   <script src="extend/LabelLayer.js"></script>   <script>     var map;     var tiled;     $(window).load(function() {       var bounds = new OpenLayers.Bounds(           87.57582859314434, 19.969920291221204,           126.56713756740385, 45.693810203800794       );       var options = {         controls: [],         maxExtent: bounds,         maxResolution: 0.1523098006807012,         projection: "EPSG:4326",         units: 'degrees'       };       map = new OpenLayers.Map('map', options);       map.addControl(new OpenLayers.Control.Zoom());       map.addControl(new OpenLayers.Control.Navigation());       map.addControl( new OpenLayers.Control.MousePosition());       var tiled = new OpenLayers.Layer.WMS(           "province", "http://localhost:8088/geoserver/lzugis/wms",           {             "LAYERS": 'province',             "STYLES": '',             format: 'image/png'           },           {             buffer: 0,             displayOutsideMaxExtent: true,             isBaseLayer: true,             yx : {'EPSG:4326' : true}           }       );       var markerLyr = new OpenLayers.Layer.Markers("marker");       var labelLyr = new OpenLayers.Layer.Labels("label");       var hlabelLyr = new OpenLayers.Layer.Labels("hlabelLyr");       map.addLayers([tiled,markerLyr,labelLyr,hlabelLyr]);       map.zoomToExtent(bounds);        var data = getRandomXY();       console.log(data);       var ul = $("#items");       var size = new OpenLayers.Size(24,26);       var offset = new OpenLayers.Pixel(0, 0);       var hMarker=null;       for(var i=0;i<data.length;i++) {         /**          * 地圖內容          */         var pt = new OpenLayers.LonLat(data[i].x, data[i].y);         var icon = new OpenLayers.Icon('img/red.png',size,offset);         var feature = new OpenLayers.Feature(markerLyr,             pt,             {'icon': icon,'attr':data[i]});         var marker = feature.createMarker();         marker.attr = data[i];         marker.id = i;         marker.events.register("click", feature, function(e){           var data = e.object.attr;           showInfowindow(data.name,data.desc);         });         marker.events.register("mouseover", feature, function(e){           map.layerContainerDiv.style.cursor = "pointer";           var id= e.object.id;           $("#img"+id).attr("src","img/blue.png");           $("#li"+id).css("background","#f2f2f2");           var data = e.object.attr;           var hpt = new OpenLayers.LonLat(data.x, data.y);           showName(hpt,data.name,"item-label-name-map");         });         marker.events.register("mouseout", feature, function(e){           map.layerContainerDiv.style.cursor = "url("             + OpenLayers.Util.getRootPath()             + "img/pan.cur),default";           var id= e.object.id;           $("#img"+id).attr("src","red.png");           $("#li"+id).css("background","#ffffff");           hlabelLyr.clear();         });         markerLyr.addMarker(marker);         var label = new OpenLayers.Label(pt,i+1,"item-label");         labelLyr.add(label);         /**          * 列表內容          */         var li = $("<li />").attr("id","li"+i).appendTo(ul);         var title = $("<div />").addClass("item").attr("i",i).data("attr",data[i]);         var img = $("<img />").attr("id","img"+i).attr("src", "img/red.png")/*.attr("width", "16").attr("height", "18")*/;         var num = $("<a />").addClass("item-num").html(i+1);         var name = $("<div />").addClass("item-title").html(data[i].name);         title.append(img).append(num).append(name);         var content = $("<a />").addClass("item-content").html(data[i].desc);         var detail = $("<a />").addClass("item-detail").html("詳細>>");         li.append(title).append(content).append(detail);         title.on("mouseover",function(){           var i = $(this).attr("i");           $("#img"+i).attr("src","img/blue.png");           var data = $(this).data("attr");           var hpt = new OpenLayers.LonLat(data.x,data.y);           var hicon = new OpenLayers.Icon('img/blue.png',size,offset);           hMarker = new OpenLayers.Marker(hpt,hicon);           markerLyr.addMarker(hMarker);           showName(hpt,data.name,"item-label-name");         });         title.on("mouseout",function(){           var i = $(this).attr("i");           $("#img"+i).attr("src","img/red.png");           markerLyr.removeMarker(hMarker);           hlabelLyr.clear();         });         title.on("click",function(){           var data = $(this).data("attr");           showInfowindow(data.name,data.desc);         });       }        $(".item-list").draggable({         handle:'.list-title'       });       $("#close").on("click",function(){         $(".item-list").hide();       });        function showName(pt,name,classname){         var label = new OpenLayers.Label(pt,name,classname);         hlabelLyr.add(label);       }       function showInfowindow(title,content){         $("<div />").window({           width:200,           height:80,           modal:true,           maximizable:false,           minimizable:false,           collapsible:false,           closable:true,           title:title,           content:content         });       }        function getRandomXY(){         var json = new Array();         for(var i=0;i<8;i++){           var w = bounds.getWidth();           var h = bounds.getHeight();           var x = Math.random() * w + bounds.left;           var y = Math.random() * h + bounds.bottom;           json.push({             id:i,             name:"name"+i,             desc:"this is the name"+i,             x:x,             y:y           })         }         return json;       }     });   </script> </head> <body> <div id="map"></div>   <div class="item-list">     <div id="close" class="list-close"></div>     <div class="list-title">結果列表</div>     <ul id="items">     </ul>   </div> </body> </html>

在本實例中,擴展了OpenLayers的圖層Labels和對象Label。

以上就是本文全部敘述,希望大家喜歡。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
97久久国产精品| 久久97精品久久久久久久不卡| 久久影院免费观看| 亚洲国产精品久久| 久久久亚洲欧洲日产国码aⅴ| 91在线视频成人| 国产精品久久久久久久久久ktv| 久久久久久亚洲精品中文字幕| 欧美精品中文字幕一区| 亚洲精品www| 欧美日韩一区二区在线播放| 欧美日韩激情小视频| 欧美劲爆第一页| 国产亚洲激情视频在线| 精品日韩视频在线观看| 日韩在线视频线视频免费网站| 久久精品在线视频| 欧美另类精品xxxx孕妇| 国产91在线播放| 午夜精品久久久久久99热| 亚洲第一页自拍| 97国产精品人人爽人人做| 国模精品视频一区二区| 欧美理论片在线观看| 精品视频—区二区三区免费| 日本欧美一级片| 久久久久久国产免费| 亚洲精品国精品久久99热一| 国产伦精品一区二区三区精品视频| 亚洲老头同性xxxxx| 久久在线视频在线| 日韩国产高清视频在线| 色综合久久精品亚洲国产| 成人精品在线视频| 91精品国产综合久久香蕉的用户体验| 国产美女久久久| 日韩在线观看免费高清完整版| 永久免费看mv网站入口亚洲| 色噜噜亚洲精品中文字幕| 亚洲精品理论电影| 欧美日韩国产页| 亚洲区免费影片| 国产女人18毛片水18精品| 亚洲欧美资源在线| 欧美理论在线观看| 日韩在线视频中文字幕| 精品久久久久久久久久久久久| 久久精品成人动漫| 亚洲人高潮女人毛茸茸| 91免费在线视频网站| 日韩中文在线不卡| 欧美日韩视频在线| 欧美性xxxxx极品| 国产激情久久久| 91视频国产高清| 久久伊人精品一区二区三区| 亚洲精品自在久久| 国产成人在线一区| 欧美性猛交xxxx久久久| 亚洲国产天堂久久国产91| 国产成人涩涩涩视频在线观看| 免费不卡欧美自拍视频| 中文字幕欧美在线| 欧美大片免费观看| 亚洲福利小视频| 国产91热爆ts人妖在线| 黄色一区二区三区| 26uuu国产精品视频| 在线亚洲午夜片av大片| 一区二区成人av| 色诱女教师一区二区三区| 国产精品高清免费在线观看| 亚洲精品国产拍免费91在线| 日韩欧美成人免费视频| 日韩一区二区在线视频| 亚洲欧美另类人妖| 国内精品中文字幕| 日韩在线高清视频| 亚洲最大中文字幕| 欧美精品videos另类日本| 最近2019年中文视频免费在线观看| 国产脚交av在线一区二区| 亚洲精品日韩丝袜精品| 成人写真视频福利网| 日韩欧美国产免费播放| 久久久999国产精品| 欧美黑人性生活视频| 欧美日韩另类视频| 国外成人免费在线播放| 中文字幕成人精品久久不卡| 久久视频在线直播| 美女999久久久精品视频| 欧美成人精品h版在线观看| 欧美极品少妇全裸体| 久久久久国产精品一区| 久久久久久91香蕉国产| 亚洲精选一区二区| 热久久免费国产视频| 久久综合电影一区| 欧美日韩精品在线播放| 国产成人精品日本亚洲专区61| 国产精品男女猛烈高潮激情| 亚洲成人精品视频在线观看| 亚洲欧洲在线看| 亚洲激情在线观看视频免费| 色综合久久天天综线观看| 欧美精品免费播放| 最近日韩中文字幕中文| 欧美性极品xxxx娇小| 少妇久久久久久| 98视频在线噜噜噜国产| 国产一区二区三区久久精品| 日韩一区二区欧美| 久久久免费av| 91国内在线视频| 欧美性猛交xxxx乱大交蜜桃| 日韩精品小视频| 色偷偷噜噜噜亚洲男人的天堂| 成人在线观看视频网站| 4438全国亚洲精品在线观看视频| 久久久免费高清电视剧观看| 亚洲最新视频在线| 成人精品视频99在线观看免费| 精品国产91久久久久久| 亚洲美女又黄又爽在线观看| 91av视频在线免费观看| 色婷婷综合成人av| 日本一区二区在线播放| 日韩欧中文字幕| 丰满岳妇乱一区二区三区| 一区二区三区精品99久久| 136fldh精品导航福利| 中文字幕在线国产精品| 亚洲午夜小视频| 亚洲伊人一本大道中文字幕| 宅男66日本亚洲欧美视频| 揄拍成人国产精品视频| 一区国产精品视频| 中文字幕亚洲欧美在线| 欧美成人黑人xx视频免费观看| 国产91精品网站| 日韩av在线播放资源| 久久夜色精品国产| 一区二区三区亚洲| 精品久久久久人成| 91精品视频在线| 欧美日韩一区二区精品| 日韩视频在线免费| 91免费精品国偷自产在线| 欧美体内谢she精2性欧美| 国产精品欧美激情| 亚洲bt天天射| 91美女片黄在线观看游戏| 精品中文字幕乱| 亚洲一区二区三区xxx视频| 久久精品电影一区二区| 97香蕉超级碰碰久久免费软件| 欧美大尺度在线观看| 成人h猎奇视频网站| 在线观看日韩欧美| 九九九久久国产免费| 精品视频一区在线视频| 亚洲精品有码在线| 国产精品福利网站|