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

摘要:
为了有个直观的概念,先给大家看看实现后的效果:百度地图的效果效果1效果2直观的看到了效果,下面说说在ArcgisforJs中实现的两种方式。在实现给效果的时候,有layer的两个事件,mouse-over和mouse-out事件,鼠标经过显示对象名称,鼠标移除清除显示。

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

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

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

(转)Arcgis for Js之鼠标经过显示对象名的实现第1张

百度地图的效果

(转)Arcgis for Js之鼠标经过显示对象名的实现第2张

效果1

(转)Arcgis for Js之鼠标经过显示对象名的实现第3张

效果2

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

1、通过TextSymbol和GraphicMarkerSymbol实现

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

  1. functionmouseOverLayer(e){
  2. map.setMapCursor("pointer");
  3. console.log(e.graphic);
  4. varfont=newesri.symbol.Font();
  5. font.setSize("10pt");
  6. font.setFamily("微软雅黑");
  7. varcpoint=event.graphic.geometry;
  8. vartext=newesri.symbol.TextSymbol(event.graphic.attributes.name);
  9. text.setFont(font);
  10. text.setColor(newdojo.Color([0,0,0,100]));
  11. text.setOffset(20,-35);
  12. pmsTextBg.setOffset(20,-30);
  13. vartextLength=event.graphic.attributes.name.length;
  14. pmsTextBg.setWidth(textLength*13.5+5);
  15. varbgGraphic=newesri.Graphic(cpoint,pmsTextBg);
  16. showTextLayer.add(bgGraphic);
  17. varlabelGraphic=newesri.Graphic(cpoint,text);
  18. showTextLayer.add(labelGraphic);
  19. };
  20. functionmouseOutLayer(){
  21. map.graphics.clear();
  22. showTextLayer.clear();
  23. map.setMapCursor("default");
  24. }

2、直接用div显示

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

  1. functionmouseOverLayer(e){
  2. map.setMapCursor("pointer");
  3. console.log(e.graphic.attributes);
  4. varscrPt=map.toScreen(e.graphic.geometry);
  5. console.log(scrPt);
  6. vartextDiv=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":"1pxsolid#0096ff",
  18. "padding":"0.1em0.3em0.1em",
  19. "font-size":"11px",
  20. "border-radius":"3px",
  21. "box-shadow":"000.75em#777777"
  22. });
  23. textDiv.innerHTML=e.graphic.attributes.name;
  24. dojo.byId("map").appendChild(textDiv);
  25. };
  26. functionmouseOutLayer(e){
  27. map.setMapCursor("default");
  28. dojo.byId("map").removeChild(dojo.byId("text"));
  29. };

比较:

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

免责声明:文章转载自《(转)Arcgis for Js之鼠标经过显示对象名的实现》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇谈谈vue.js中methods watch和compute的区别和联系20145322《网络对抗技术》免杀原理与实践下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

ArcGis Server开发Web GIS新手体验(四)

接(三)这一节主要贴代码算了,通过代码看一下一些简单功能的实现。偶快要放假了,静不下心来写了,写得也不好。说不定贴代码效果更好。1、获取所有图层     ESRI.ArcGIS.Server.WebControls.WebMap webmap= Map1.CreateWebMap();    try    {     ESRI.ArcGIS.Carto...

JS中常用的xpath特性

//选择所有dir元素的值等于xx的元素    Dom.documentElement.selectNodes("server/dir[text()='xx']")       //选择server元素下的所有dir元素:    Dom.documentElement.selectNodes("server/dir")       //选择server元素...

gulp4.0配置

var gulp = require('gulp'); var rename = require('gulp-rename');//重命名 var uglify=require('gulp-uglify');//js压缩 var watch=require('gulp-watch');//监视 v...

JS实现刷新iframe的方法

<iframe src="http://t.zoukankan.com/1.htm" name="ifrmname" id="ifrmid"></iframe> 方案一:用iframe的name属性定位 <input type="button" name="Button" value="Button"onclick="docu...

三种Js深度学习框架介绍

谈到机器学习,我们脑海首先蹦出的编程语言是什么?一定是python。其实除了python,JavaScript也是不错的选择。都说现在是大前端时代,从移动开发、服务器端,甚至桌面软件开发(比如大名鼎鼎的VS Code),都有JavaScript的身影。   用Javascript写机器学习应用,当然不会从头开始手写机器学习算法和模型,通常会借助现有框架。我...

景观分析工具:arcgis中patch analysis模块

关键字:景观分析arcgis patch analysis 地理信息系统 转自:http://blog.sina.com.cn/s/blog_44b367b10100xt9m.html 模块下载地址:http://flash.lakeheadu.ca/~rrempel/patch/pa_Setup_v93.exe 模块安装步骤: 1. First un...