由于业务需求需要用到弹窗,故记录下用法以便不时之需
1)infoWindow
笔者使用的infoWindow是map所带的infoWindow,有一个好处就是可以控制显示和隐藏,infotemplate的话需要点击要素才能够显示(至于模拟点击要素的方法。。。。暂时没有找到)
代码如下:
map.infoWindow.setTitle("医院2016");
map.infoWindow.setContent( "<div class=\"layui-card-header\">"+features[i].attributes.NAME+"</div>"+
"<div class=\"layui-card-body\">"+
"<img src=\""+e[0].url+"\" style=\"width: 200px;\"></div>"+
"<div class=\"layui-card-body\">地址:"+features[i].attributes.ADDRESS+"</div>"+
"<div class=\"layui-card-body\"> 电话:"+features[i].attributes.PHONE+" </div>");
map.infoWindow.show(new Point(features[i].geometry.x,features[i].geometry.y));//显示
map.centerAndZoom(new Point(features[i].geometry.x,features[i].geometry.y),12);//显示的位置
//隐藏 map.infoWindow.hide();//显示
2)infoTemplate
第一个是基于featureLayer的弹窗,基于自身的属性来生成,上代码:
var infoTemplate=new InfoTemplate();
infoTemplate.setTitle("2016年武汉市医院");
var layer1=new FeatureLayer(data.layers[0].url,{
id:"2016",
outFields: ["*"],
// visible:false
infoTemplate:infoTemplate
})
infoTemplate.setContent( "<div class=\"layui-card-header\">${NAME}</div>"+
"<div class=\"layui-card-body\">"+
"<img src=\""+data[0].url+"\" style=\"width: 200px;\"></div>"+
"<div class=\"layui-card-body\">地址:${ADDRESS}</div>"+
"<div class=\"layui-card-body\"> 电话:${PHONE} </div>");
第二个是基于graphicsLayer 的弹窗:
var differenceLayer=new GraphicsLayer();
var diffInfo=new InfoTemplate();
diffInfo.setTitle("图斑信息");
var attr = {"area":Math.abs(dArea.toFixed(3))};
diffInfo.setContent("<div class='layui-card-body'>面积:${area}公顷</div>");
differenceLayer.add(new Graphic(new Polygon(differenceGeometry.rings[j]).setSpatialReference(new SpatialReference({wkid:4490})),symbol1,attr,diffInfo));//添加一个graphic就设置一个弹窗
//格式是:graphicsLayer,add(graphic,symbol,attr,infotemplate)