基于Arcgis for javascript实现百度地图ABCD marker的效果


Posted in Javascript onSeptember 12, 2015

先给大家展示实现后效果:

为直观期间,先贴出来我做的效果

基于Arcgis for javascript实现百度地图ABCD marker的效果

列表展示和地图展示以及联动

基于Arcgis for javascript实现百度地图ABCD marker的效果

显示信息

实现思路:

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的效果,希望大家喜欢。

Javascript 相关文章推荐
javascript void(0)的妙用
Oct 21 Javascript
javascript作用域容易记错的两个地方分析
Jun 22 Javascript
jquery.blockUI.js上传滚动等待效果实现思路及代码
Mar 18 Javascript
js中array的sort()方法使用介绍
Feb 20 Javascript
页面加载完成后再执行JS的jquery写法以及区别说明
Feb 22 Javascript
js判断iframe内的网页是否滚动到底部触发事件
Mar 18 Javascript
jquery Easyui快速开发总结
Aug 20 Javascript
Javascript实现图片不间断滚动的代码
Jun 22 Javascript
全面解析node 表单的图片上传
Nov 21 Javascript
详解jQuery uploadify文件上传插件的使用方法
Dec 16 Javascript
深入解析koa之异步回调处理
Jun 17 Javascript
适用于 Vue 的播放器组件Vue-Video-Player操作
Nov 16 Javascript
jquery实现最简单的滑动菜单效果代码
Sep 12 #Javascript
jQuery实现自动切换播放的经典滑动门效果
Sep 12 #Javascript
JavaScript中this的9种应用场景及三种复合应用场景
Sep 12 #Javascript
javascript判断网页是关闭还是刷新
Sep 12 #Javascript
js查看一个函数的执行时间实例代码
Sep 12 #Javascript
JavaScript学习笔记(三):JavaScript也有入口Main函数
Sep 12 #Javascript
JS实现仿QQ面板的手风琴效果折叠菜单代码
Sep 11 #Javascript
You might like
老照片 - 几十年前的收音机与人
2021/03/02 无线电
PHP开发的一些注意点总结
2010/10/12 PHP
php 获取百度的热词数据的代码
2012/02/18 PHP
推荐10个提供免费PHP脚本下载的网站
2014/12/31 PHP
PHP 二维数组和三维数组的过滤
2016/03/16 PHP
修改yii2.0用户登录使用的user表为其它的表实现方法(推荐)
2017/08/01 PHP
window.onbeforeunload方法在IE下无法正常工作的解决办法
2010/01/23 Javascript
JavaScript DOM学习第四章 getElementByTagNames
2010/02/19 Javascript
jQuery使用andSelf()来包含之前的选择集
2014/05/19 Javascript
javascript实现鼠标拖动改变层大小的方法
2015/04/30 Javascript
jquery实现表单验证简单实例演示
2015/11/23 Javascript
轻松学习jQuery插件EasyUI EasyUI创建RSS Feed阅读器
2015/11/30 Javascript
浅谈json取值(对象和数组)
2016/06/24 Javascript
详解用vue.js和laravel实现微信支付
2017/06/23 Javascript
Vuex中mutations与actions的区别详解
2018/03/01 Javascript
js合并两个数组生成合并后的key:value数组
2018/05/09 Javascript
Vue父子组件之间的通信实例详解
2018/09/28 Javascript
layui字体图标 loading图标静止不旋转的解决方法
2019/09/23 Javascript
vue中使用百度脑图kityminder-core二次开发的实现
2019/09/26 Javascript
如何在wxml中直接写js代码(wxs)
2019/11/14 Javascript
python 切片和range()用法说明
2013/03/24 Python
python利用MethodType绑定方法到类示例代码
2017/08/27 Python
python matplotlib画图实例代码分享
2017/12/27 Python
Python数据分析之双色球统计单个红和蓝球哪个比例高的方法
2018/02/03 Python
Python实现输出某区间范围内全部素数的方法
2018/05/02 Python
matplotlib 纵坐标轴显示数据值的实例
2018/05/25 Python
Python-opencv 双线性插值实例
2020/01/17 Python
Python 文件数据读写的具体实现
2020/01/24 Python
python邮件中附加文字、html、图片、附件实现方法
2021/01/04 Python
CSS3 开发工具收集
2010/04/17 HTML / CSS
英国女性时尚精品店:THE DRESSING ROOM
2018/05/23 全球购物
校园十大歌手策划书
2014/02/01 职场文书
军训 自我鉴定
2014/02/03 职场文书
家长寄语大全
2014/04/02 职场文书
化工专业自荐书
2014/06/16 职场文书
2016年优秀共产党员先进事迹材料
2016/02/29 职场文书