arcgis for js 3.X 弹出气泡

Posted 左直拳

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了arcgis for js 3.X 弹出气泡相关的知识,希望对你有一定的参考价值。

arcgis里面,弹出气泡是很基本的操作。我目前知道的气泡方式,有2种。

一、点击地理对象,出气泡

这个是arcgis的固有功能,并不需要我们写什么代码。只须在加载图层时,指定一个模板参数:infoTemplate。

fl = new FeatureLayer(param.nodePath, 
	id: param.id + "",
	mode: FeatureLayer.MODE_ONDEMAND,
	definitionExpression: param.expression,
	infoTemplate: new InfoTemplate(param.title,param.template),//<-----
	outFields: fields,
	visible: false
);

这个所谓的模板参数,无非就是一些hmtl代码,里面指定了动态字段,如:

<b>$名称</b><hr>类型:<b>$类型</b><br />面积:<b>$面积</b>(公顷)<br />所在市县:<b>$所在市 - $所在县</b><br />

仅此而已。图层加载以后,点击该图层上的各个地理块,即弹出infoWindow,内容按照模板设置输出。

二、提示框TooltipDialog

具体可写成当鼠标 mouseover 图层地理对象上面时,显示提示框;mouseout时提示框消失。

为加强效果,mouseover时,可将边线置亮。但是,这样一来,点击地理对象,就没有infoWindow可以弹出来了。原因是,为了置亮边线,其实是在地图上加了一个Grapthic对象,覆盖在原来的地理对象上面。这时,你点击这个地理对象时就被屏蔽了,实际上点击的是该Grapthic对象,所以默认的出来infoWindow功能就没有了。

代码如下:

//定义提示框
var dialog = new TooltipDialog(
	id: "tooltipDialog",
	style: "position: absolute; width: 250px; font: normal normal normal 10pt Helvetica;z-index:100"
);
dialog.startup();
var highlightSymbol = new SimpleFillSymbol(//红边画笔
	SimpleFillSymbol.STYLE_SOLID,
	new SimpleLineSymbol(
		SimpleLineSymbol.STYLE_SOLID,
		new Color([255, 0, 0]), 3
	),
	new Color([125, 125, 125, 0.35])
);

//打开提示框
function showtip(template) 
	return function (evt) 
		var content = esriLang.substitute(evt.graphic.attributes, template);
		var highlightGraphic = new Graphic(evt.graphic.geometry, highlightSymbol);
		map.graphics.add(highlightGraphic);//红色描边

		dialog.setContent(content);

		domStyle.set(dialog.domNode, "opacity", 0.85);
		dijitPopup.open(
			popup: dialog,
			x: evt.pageX,
			y: evt.pageY
		);
	

//关闭提示框
function closeDialog() 
	map.graphics.clear();//擦去红色描边
	dijitPopup.close(dialog);


function buildFeatureLayer(param) 
	var fl = new FeatureLayer(param.url, 
		id: param.id,
		mode: FeatureLayer.MODE_ONDEMAND,
		definitionExpression: param.expression,
		infoTemplate: param.template,
		outFields: param.fields,
		visible: false
	);
	map.addLayer(fl);
	if (param.template != null) 
		fl.on("mouse-over", showtip(param.template));//mouseover时,打开提示框
	
	return fl;

map.on("load", function () 
	map.graphics.enableMouseEvents();
	map.graphics.on("mouse-out", closeDialog);//mouseout时,关闭提示框
	map.on("mouse-down", closeDialog);
);

其实,我想实现的效果是:mouseover时,出提示框;click时,出infoWindow。但昨天捣鼓了半天,没搞出来。留待空闲时再看看。

以上是关于arcgis for js 3.X 弹出气泡的主要内容,如果未能解决你的问题,请参考以下文章

arcgis for js 4.X 鼠标悬停弹出气泡

arcgis for js 4.X 鼠标悬停弹出气泡

arcgis for js 4.X自定义气泡点击地图对象弹出对话框

arcgis for js 4.X自定义气泡点击地图对象弹出对话框

Swift之高德地图自定义标注弹出气泡样式

c# winform 如何实现弹出气泡状的提示框