基於Arcgis for javascript實現百度地圖ABCD marker的效果,arcgismarker

來源:互聯網
上載者:User

基於Arcgis for javascript實現百度地圖ABCD marker的效果,arcgismarker

先給大家展示實現後效果:

為直觀期間,先貼出來我做的效果

列表展示和地圖展示以及聯動

顯示資訊

實現思路:

1、列表與地圖的互動

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

關鍵代碼:

title.on("mouseover",function(){  var attr = $(this).data("attr");  $("#icon"+attr.id).css("background","url('images/blue.png')");  var pt=new Point(attr.x,attr.y,{"wkid":4326});  var pms = new esri.symbol.PictureMarkerSymbol("images/blue.png",24,26)  var gImg = new Graphic(pt,pms);  gLyrHover.add(gImg); }); title.on("mouseout",function(){  var attr = $(this).data("attr");  $("#icon"+attr.id).css("background","url('images/red.png')");  gLyrHover.clear(); });

2、地圖與列表的互動

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

關鍵代碼:

gLyr.on("mouse-over",function(e){  map.setMapCursor("pointer");  var sms = e.graphic.symbol;  sms.url = "images/blue.png";  gLyr.redraw();  $("#icon"+e.graphic.attributes.id).css("background","url('images/blue.png')"); }); gLyr.on("mouse-out",function(e){  map.setMapCursor("default");  var sms = e.graphic.symbol;  sms.url = "images/red.png";  gLyr.redraw();  $("#icon"+e.graphic.attributes.id).css("background","url('images/red.png')"); }); 

3、地圖上ABCD的文字是一個單獨的圖層,不參與互動。

4、資料以JSON形式存在。

var data = [  {  "id":"A","name":"拉薩", "x":91.162998, "y":29.71042,  "desc":"拉薩是中國西藏自治區的首府,西藏的政治、經濟、文化和宗教中心,也是藏傳佛教聖地。"  },  {  "id":"B", "name":"西寧","x":101.797303,"y":36.593642,  "desc":"西寧是青海省的省會,古稱西平郡、青唐城,取”西陲安寧“之意,是整個青藏高原最大的城市。"  },  {  "id":"C","name":"蘭州","x":103.584297,"y":36.119086,  "desc":"蘭州,甘肅省省會,西北地區重要的工業基地和綜合交通樞紐,西部地區重要的中心城市之一,絲綢之路經濟帶的重要節點城市。"  },  {  "id":"D","name":"成都","x":104.035508,"y":30.714179,  "desc":"成都,簡稱蓉,四川省省會,1993年被國務院確定為西南地區的科技、商貿、金融中心和交通、通訊樞紐。"  } ];

完整代碼:

<!DOCTYPE html> <html> <head>  <meta http-equiv="Content-Type" content="text/html; charset=utf-8">  <meta name="viewport" content="initial-scale=1, maximum-scale=1,user-scalable=no"/>  <title></title>  <link rel="stylesheet" href="http://localhost/arcgis_js_api/library/3.9/3.9/js/esri/css/esri.css">  <style type="text/css">  html, body, #map {   height: 100%;   margin: 0;   padding: 0;   font-size: 62.5%;   font-family:"微軟雅黑";  }  .search-box{   z-index: 99;   background: #fff;   border: 1px solid #888888;   border-radius: 5px;   width: 220px;   max-height:600px;   overflow-y: auto;   position: absolute;   top: 120px;   left: 10px;  }  .search-box-title{   padding: 6px 10px;   text-align: left;   font-size: 13px;   font-weight: bold;   color: #f2f2f2;   background: #85b0db;  }  .search-box-result{   list-style: none;   margin-left:-40px;   margin-top: 0px;  }  .search-box-result-item{   border-bottom: 1px solid #eeeeee;   padding: 5px 8px;  }  .search-name{   float: right;   font-weight: bold;   font-size: 13px;   margin-top: 3px;   margin-right: 10px;  }  .search-name-title{   background: #f2f2f2;  }  .search-name-title:hover{   cursor: pointer;  }  .search-detail{   border-top: 1px dashed #eeeeee;   margin-top: 3px;   padding: 3px 5px;   line-height: 18px;  }  .search-icon{   background: url("images/red.png");   width: 24px;   height: 26px;   background-repeat: no-repeat;  }  .search-text{   color: #ffffff;   font-weight: bold;   font-size: 16px;   margin-left:7px ;  }  .detail{   color: #85b0db;   font-weight: bold;   text-align: right;  }  .detail:hover{   cursor: pointer;  }  </style>  <script src="http://localhost/arcgis_js_api/library/3.9/3.9/init.js"></script>  <script src="jquery-1.8.3.js"></script>  <script type="text/javascript">  var map;  var data = [   {   "id":"A","name":"拉薩", "x":91.162998, "y":29.71042,   "desc":"拉薩是中國西藏自治區的首府,西藏的政治、經濟、文化和宗教中心,也是藏傳佛教聖地。"   },   {   "id":"B", "name":"西寧","x":101.797303,"y":36.593642,   "desc":"西寧是青海省的省會,古稱西平郡、青唐城,取”西陲安寧“之意,是整個青藏高原最大的城市。"   },   {   "id":"C","name":"蘭州","x":103.584297,"y":36.119086,   "desc":"蘭州,甘肅省省會,西北地區重要的工業基地和綜合交通樞紐,西部地區重要的中心城市之一,絲綢之路經濟帶的重要節點城市。"   },   {   "id":"D","name":"成都","x":104.035508,"y":30.714179,   "desc":"成都,簡稱蓉,四川省省會,1993年被國務院確定為西南地區的科技、商貿、金融中心和交通、通訊樞紐。"   }  ];  require([    "esri/map",    "esri/layers/ArcGISTiledMapServiceLayer",    "esri/geometry/Point",    "esri/layers/GraphicsLayer",    "esri/graphic",    "dojo/_base/Color",    "dojo/domReady!"],   function(Map,     Tiled,     Point,     GraphicsLayer,     Graphic,     Color)   {    map = new Map("map",{logo:false});    var tiled = new Tiled("http://localhost:6080/arcgis/rest/services/china/MapServer",{"id":"tiled"});    map.addLayer(tiled);    var mapCenter = new Point(103.847, 36.0473, {"wkid":4326});    map.centerAndZoom(mapCenter,0);    var gLyr = new GraphicsLayer({"id":"gLyr"});    map.addLayer(gLyr);    var gLyrHover = new GraphicsLayer({"id":"gLyrHover"});    map.addLayer(gLyrHover);    var gLyrLbl = new GraphicsLayer({"id":"gLyrLbl"});    map.addLayer(gLyrLbl);    map.on("load",function(){    $("#search").show();    for(var i=0;i<data.length;i++){     var li = $("<li />").addClass("search-box-result-item").appendTo($("#result"));     var name = $("<div />").addClass("search-name").html(data[i].name);     var icon = $("<div />").addClass("search-icon")      .attr("id","icon"+data[i].id)      .append("<div class='search-text'>"+data[i].id+"</div>");     var title = $("<div />").addClass("search-name-title")      .append(name).append(icon).appendTo(li)      .data("attr",data[i]);     var desc = $("<div />").addClass("search-detail").html(data[i].desc).appendTo(li);     var more = $("<div />").addClass("detail").appendTo(li).html(">>詳細");     title.on("mouseover",function(){     var attr = $(this).data("attr");     $("#icon"+attr.id).css("background","url('images/blue.png')");     var pt=new Point(attr.x,attr.y,{"wkid":4326});     var pms = new esri.symbol.PictureMarkerSymbol("images/blue.png",24,26)     var gImg = new Graphic(pt,pms);     gLyrHover.add(gImg);     });     title.on("mouseout",function(){     var attr = $(this).data("attr");     $("#icon"+attr.id).css("background","url('images/red.png')");     gLyrHover.clear();     });     title.on("click",function(){     var attr = $(this).data("attr");     showCity(attr);     });     var pt=new Point(data[i].x,data[i].y,{"wkid":4326});     var pms = new esri.symbol.PictureMarkerSymbol("images/red.png",24,26)     var gImg = new Graphic(pt,pms,data[i]);     gLyr.add(gImg);     var font = new esri.symbol.Font();     font.setSize("10pt");     font.setFamily("微軟雅黑");     var text = new esri.symbol.TextSymbol(data[i].id);     text.setOffset(0,-2);     text.setFont(font);     text.setColor(new dojo.Color([255,255,255,100]));     var gLbl = new esri.Graphic(pt,text,data[i]);     gLyrLbl.add(gLbl);    }    gLyr.on("mouse-over",function(e){     map.setMapCursor("pointer");     var sms = e.graphic.symbol;     sms.url = "images/blue.png";     gLyr.redraw();     $("#icon"+e.graphic.attributes.id).css("background","url('images/blue.png')");    });    gLyr.on("mouse-out",function(e){     map.setMapCursor("default");     var sms = e.graphic.symbol;     sms.url = "images/red.png";     gLyr.redraw();     $("#icon"+e.graphic.attributes.id).css("background","url('images/red.png')");    });    gLyr.on("click",function(e){     var attr = e.graphic.attributes;     showCity(attr);    });    });     function showCity(attr){    var pt=new Point(attr.x,attr.y,{"wkid":4326});    map.infoWindow.setTitle(attr.name);    map.infoWindow.setContent(attr.desc);    map.infoWindow.resize(200,80);    map.infoWindow.show(pt);    map.centerAndZoom(pt,0);    }   });  </script> </head> <body> <div id="search" class="search-box" style="display: none;">  <div class="search-box-title">查詢結果</div>  <ul class="search-box-result" id="result">  </ul> </div> <div id="map"> </div> </body> </html> 

以上內容就是幫客之家小編給大家分享的基於Arcgis for javascript實現百度地圖ABCD marker的效果,希望大家喜歡。

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.