http://blog.csdn.net/gisshixisheng/article/details/41889345

在浏览地图时,移动鼠标经过某个对象或者POI的时候,能够提示该对象的名称对用户来说是很实用的,本文讲述在Arcgis for Js中,用两种不同的方式来实现该效果。

为了有个直观的概念,先给大家看看实现后的效果:

百度地图的效果

效果1

效果2

直观的看到了效果,下面说说在Arcgis for Js中实现的两种方式。在实现给效果的时候,有layer的两个事件,mouse-over和mouse-out事件,鼠标经过显示对象名称,鼠标移除清除显示。

1、通过TextSymbol和GraphicMarkerSymbol实现

通过这种方式显示是直接用Arcgis的方式实现的,实现的代码如下,效果为效果2:

[javascript] view plaincopy print?
  1. function mouseOverLayer(e){
  2. map.setMapCursor("pointer");
  3. console.log(e.graphic);
  4. var font  = new esri.symbol.Font();
  5. font.setSize("10pt");
  6. font.setFamily("微软雅黑");
  7. var cpoint = event.graphic.geometry;
  8. var text = new esri.symbol.TextSymbol(event.graphic.attributes.name);
  9. text.setFont(font);
  10. text.setColor(new dojo.Color([0,0,0,100]));
  11. text.setOffset(20,-35);
  12. pmsTextBg.setOffset(20,-30);
  13. var textLength=event.graphic.attributes.name.length;
  14. pmsTextBg.setWidth(textLength*13.5+5);
  15. var bgGraphic = new esri.Graphic(cpoint, pmsTextBg);
  16. showTextLayer.add(bgGraphic);
  17. var labelGraphic = new esri.Graphic(cpoint,text);
  18. showTextLayer.add(labelGraphic);
  19. };
  20. function mouseOutLayer(){
  21. map.graphics.clear();
  22. showTextLayer.clear();
  23. map.setMapCursor("default");
  24. }

2、直接用div显示

通过获取鼠标点位置或者几何体位置,将位置转换为屏幕坐标,将信息用div的形式展示出来,代码如下,效果为效果1:

[html] view plaincopy print?
  1. function mouseOverLayer(e){
  2. map.setMapCursor("pointer");
  3. console.log(e.graphic.attributes);
  4. var scrPt = map.toScreen(e.graphic.geometry);
  5. console.log(scrPt);
  6. var textDiv = dojo.doc.createElement("div");
  7. dojo.attr(textDiv,{
  8. "id":"text"
  9. });
  10. dojo.style(textDiv, {
  11. "left": scrPt.x+10 + "px",
  12. "top": scrPt.y+10 + "px",
  13. "position": "absolute",
  14. "z-index":99,
  15. "background":"#fcffd1",
  16. "font-size":"10px",
  17. "border":"1px solid #0096ff",
  18. "padding": "0.1em 0.3em 0.1em",
  19. "font-size": "11px",
  20. "border-radius": "3px",
  21. "box-shadow": "0 0 0.75em #777777"
  22. });
  23. textDiv.innerHTML =e.graphic.attributes.name;
  24. dojo.byId("map").appendChild(textDiv);
  25. };
  26. function mouseOutLayer(e){
  27. map.setMapCursor("default");
  28. dojo.byId("map").removeChild(dojo.byId("text"));
  29. };

比较:

以上两种方式都可实现相同的效果,但就实现的难易程度,第二种比第一种简单,在实现的美观程度上,第二种比第一种更好调整与控制,在实现效率上,第二种比第一种好一点,可是,就在与地图的结合上,很显然,第二种比第一种稍微差一点。

转载于:https://www.cnblogs.com/telwanggs/p/6972940.html

(转)Arcgis for Js之鼠标经过显示对象名的实现相关推荐

  1. 数据库已经插入表名但是显示对象名无效

    SQL SERVER 已经插入表名,select 可以查出数据,但是显示对象名无效 问题 解决:试试刷新本地缓存,方法--菜单栏>编辑>intelliSense>刷新本地缓存.

  2. vue 悬停显示另一个div_CSS或者JS实现鼠标悬停显示另一元素

    想达到鼠标悬停到元素a上,显示另一个元素b,可以通过css实现也可以通过js实现. js: 写两个函数:mouseenter,mouseleave,例如:其中 $("#a").mo ...

  3. html鼠标经过自动下拉菜单,js css鼠标悬停显示下拉菜单

    个人信息维护 学生信息修改 修改密码--%> 修改密码--%> 修改密码--%> 退出 登录用户: 所在班级: js文件 //个人信息维护下拉菜单样式 $(function () { ...

  4. Arcgis for JS扩展GraphicLayer实现区域对象的聚类统计与展示

    功能需求: 分省市统计并展示全国雨量站的数目与位置. 常规做法: 分省市雨量站的数目通过统计表的形式在页面端展示,位置根据XY坐标信息将雨量站标绘在图上. 优化做法: 去掉统计图的展示方式,直接将各省 ...

  5. SQL SERVER 插入时表名显示对象名无效 问题

    试试刷新本地缓存,方法 intelliSense ->刷新本地缓存.

  6. (转载)arcgis for js - 解决加载天地图和WMTS服务,WMTS服务不显示的问题,以及wmts服务密钥。...

    1 arcgis加载天地图和wmts服务 arcgis for js加载天地图的例子网上有很多,这里先不写了,后期有空再贴代码,这里主要分析下WMTS服务为什么不显示,怎么解决. 条件:这里的WMTS ...

  7. js(jquery)鼠标移入移出事件时,出现闪烁、隐藏显示隐藏显示不停切换的情况

    <script> $(".guanzhu").hover(function(){$(".weixinTop").show();},function( ...

  8. js实现鼠标放在div 悬浮显示另一个div内容链接 (不占位置)

    js实现鼠标放在div 悬浮显示另一个div内容链接 (不占位置) 代码如下 不喜勿喷 简单记录前端小知识 <div><a id="div1" href=&quo ...

  9. html5鼠标滑过边框内外发亮,JS实现鼠标滑过显示边框的菜单效果

    本文实例讲述了JS实现鼠标滑过显示边框的菜单效果.分享给大家供大家参考,具体如下: JS鼠标滑过显示边框菜单 .menulines{ border:1px solid white; } .menuli ...

最新文章

  1. ubuntu 16.04 如何获取root权限
  2. 利用memcached做缓存服务器,为后端tomcat服务器做会话保持,利用httpd的jk模块模块做负载均衡...
  3. JavaScript入门(part12)--内置对象
  4. C++ 网络开发工具
  5. 任务调度的使用crontab
  6. HDU1466 计算直线的交点数
  7. 【Flink】Flink中流动的四种元素
  8. 2020年4月中国编程语言排行榜程序员工资统计,人工智能工资大跌
  9. 如何让你的员工有闭环思维?
  10. 题解【luogu P2421 bzoj P1407 [NOI2002]荒岛野人】
  11. 代理服务器反向代理varnish配置文件解析
  12. html5 figure 标签
  13. 南阳oj-----n-1位数(多解法汇总)
  14. echarts 不支持 手机 浏览器_中国北斗卫星导航系统真的来了!获国产手机力挺:但iPhone却不支持...
  15. SpringBoot大数据分析后台管理系统平台
  16. shell中单引号和双引号的区别-经典解释
  17. C语言中%d,%o,%f,%e,%x的意义
  18. 基于STM32超声波测距
  19. 关于阿里云主机数据丢失问题,是常态还是个例?如何保障数据安全?...
  20. 计算机基础知识大全之硬件篇

热门文章

  1. Spark源码分析之BlockManager
  2. curl java 转换_Linux CURL学习(转)
  3. sqlite3 交叉编译出现configure: error: C compiler cannot create executables
  4. c语言连续非递减子序列,最长非递减子序列的应用
  5. 【蓝桥杯嵌入式】【STM32】4_TIM之定时器及其中断、PWM初探
  6. 交换机知识--生成树协议
  7. 3.3.4.7. 模式匹配
  8. NAPI 方式的实现
  9. 重叠面积_20天津中考试卷及答案(24题重叠面积画板制作教程)
  10. linux时间树,linux小知识之查看系统时间