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

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


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


百度地图的效果


效果1


效果2

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

1、通过TextSymbol和GraphicMarkerSymbol实现

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

function mouseOverLayer(e){
	map.setMapCursor("pointer");
	console.log(e.graphic);	
	var font  = new esri.symbol.Font();
	font.setSize("10pt");
	font.setFamily("微软雅黑");
	var cpoint = event.graphic.geometry;
	var text = new esri.symbol.TextSymbol(event.graphic.attributes.name);
	text.setFont(font);
	text.setColor(new dojo.Color([0,0,0,100]));
	text.setOffset(20,-35);
	
	pmsTextBg.setOffset(20,-30);
	var textLength=event.graphic.attributes.name.length;
	pmsTextBg.setWidth(textLength*13.5+5);
	var bgGraphic = new esri.Graphic(cpoint, pmsTextBg);
	showTextLayer.add(bgGraphic);
	var labelGraphic = new esri.Graphic(cpoint,text);
	showTextLayer.add(labelGraphic);
	
};
function mouseOutLayer(){
	map.graphics.clear();
	showTextLayer.clear();
	map.setMapCursor("default");
}

2、直接用div显示

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

            function mouseOverLayer(e){
                map.setMapCursor("pointer");
                console.log(e.graphic.attributes);
                var scrPt = map.toScreen(e.graphic.geometry);
                console.log(scrPt);
                var textDiv = dojo.doc.createElement("div");
                dojo.attr(textDiv,{
                    "id":"text"
                });
                dojo.style(textDiv, {
                    "left": scrPt.x+10 + "px",
                    "top": scrPt.y+10 + "px",
                    "position": "absolute",
                    "z-index":99,
                    "background":"#fcffd1",
                    "font-size":"10px",
                    "border":"1px solid #0096ff",
                    "padding": "0.1em 0.3em 0.1em",
                    "font-size": "11px",
                    "border-radius": "3px",
                    "box-shadow": "0 0 0.75em #777777"
                });
                textDiv.innerHTML =e.graphic.attributes.name;
                dojo.byId("map").appendChild(textDiv);
            };
            function mouseOutLayer(e){
                map.setMapCursor("default");
                dojo.byId("map").removeChild(dojo.byId("text"));
            };

比较:

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


如有疑问,请联系:

QQ:1004740957

Email:niujp08@qq.com


  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论
ArcGIS API for JavaScript是一个强大的JavaScript库,用于在Web浏览器中创建交互式的地理信息应用程序。它与ArcGIS平台集成,提供了丰富的功能和效果: 1. 地图展示和可视化:ArcGIS API for JavaScript可以创建各种类型的地图,包括基础地图、矢量地图、影像地图等。它支持多种地图样式和图层,可以自定义地图的样式、标注和符号化,实现地理数据的可视化展示。 2. 地理空间分析:API提供了丰富的地理空间分析工具,包括缓冲区分析、叠加分析、网络分析和空间插值等。用户可以在Web浏览器中进行各种空间分析操作,解决问题并生成结果。 3. 交互式操作和查询:API支持用户与地图进行交互,包括平移、缩放、旋转等操作。用户可以通过鼠标点击或触摸屏幕进行要素选择、属性查询等交互操作,获取感兴趣的地理信息。 4. 数据可视化和渲染:API提供了多种数据可视化和渲染方式,包括符号化、热力图、聚类等。用户可以根据数据特点和需求选择合适的可视化方式,呈现地理数据的特征和分布。 5. 图表和报表展示:API支持在地图上展示图表和报表,用户可以根据地理数据生成各种类型的图表,如柱状图、饼图等。这样可以更直观地展示数据的统计和分析结果。 6. 地图协同和共享:API支持地图的协同编辑和共享,多个用户可以同时编辑和更新地图数据。同时,API还提供了数据发布和共享功能,用户可以将地图发布为Web服务,供其他人在线浏览和访问。 7. 应用程序开发:ArcGIS API for JavaScript提供了丰富的开发工具和API,开发者可以根据需求创建定制化的地理信息应用程序。这些应用程序可以在各种平台上运行,包括桌面、移动设备和Web浏览器。 总之,ArcGIS API for JavaScript是一个功能强大的工具,可以实现地图展示、地理空间分析、数据可视化、交互操作和应用程序开发等多种效果和功能。它广泛应用于WebGIS开发、地理数据可视化和空间分析等领域。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

牛老师讲GIS

感谢老板支持

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值