通过给地图绑定缩放,单击和平移命令,实现在地图附加div标签,实现infowindow效果;

 /*
*作者 扰扰
*自定义esri弹窗
*paramter Map地图对象
*paramter x
*paramter y
*paramter title标题
*paramter html展示内容html字符串
*paramter height弹窗高度默认为300
*paramter width弹窗宽度默认为200
*/
RaoRao.esriDivPanel = function (Map, x, y, title, html, height, width) {
//加载时地图坐标
var X = x, Y = y, map = Map;
//弹窗宽度
var Heigth = 300;
if (height) { Height = height }
//弹窗高度
var Width = 400;
if (width) { Width = width }
//弹窗位置
var top = 0;
//弹窗位置
var left = 0;
//弹窗对象
var Div = null;
//移动量
var movX = 0, movY = 0;
//变化量
var tempX = 0, tempY = 0;
//地图拖拽事件
this._panEvt = null;
this._panEndEvt = null;
//地图所缩放事件
this._zoomStartEvt = null;
this._zoomEndEvt = null;
//弹窗DIV
this.div = document.createElement("div");
Div = this.div;
this.div.className = "esriDivPanel";
var divcss = 'width:' + Width + 'px;height:' + Heigth + 'px;';
this.div.style.cssText = divcss; this.title = document.createElement("div");
this.title.className = "esriDivPanel_title";
var close = document.createElement("div");
close.className = "esriDivPanel_titleClose";
close.innerHTML = "<span></span>"; var titletext = document.createElement("div");
titletext.className = "esriDivPanel_titleTxt";
titletext.innerHTML = title; this.content = document.createElement("div");
this.content.className = "esriDivPanel_content";
this.content.innerHTML = html;
this.content.style.cssText = "height:" + (Heigth - 32) + "px;"; this.triangle = document.createElement("div");
this.triangle.className = "esriDivPanel_triangle"; this.title.appendChild(close);
this.title.appendChild(titletext); this.div.appendChild(this.title);
this.div.appendChild(this.content);
this.div.appendChild(this.triangle); var point = new esri.geometry.Point(x, y, map.spatialReference);
var p = map.toScreen(point);
top = p.y - Heigth-36;
left = p.x - Width / 2;
this.div.style.top = top + "px";
this.div.style.left = left + "px";
document.getElementById(map.id).appendChild(this.div);
//定义地图缩放事件
this._zoomStartEvt = map.on("zoom-start", function (evt) {
//Div.style.display = "none";
var point = new esri.geometry.Point(X, Y, map.spatialReference);
var p = map.toScreen(point);
top = p.y - Heigth - 36;
left = p.x - Width / 2;
Div.style.top = top + "px";
Div.style.left = left + "px";
});
this._zoomEndEvt = map.on("zoom-end", function (evt) {
//Div.style.display = "block";
var point = new esri.geometry.Point(X, Y, map.spatialReference);
var p = map.toScreen(point);
top = p.y - Heigth - 36;
left = p.x - Width / 2;;
Div.style.top = top + "px";
Div.style.left = left + "px";
});
//定义地图拖拽事件
this._panEvt = map.on("pan", function (evt) {
var point = evt.delta;
movX = point.x - tempX;
movY = point.y - tempY;
tempX = point.x; tempY = point.y;
top = top + movY;
left = left + movX;
Div.style.top = top + "px";
Div.style.left = left + "px";
});
this._panEndEvt = map.on("pan-end", function (evt) {
tempX = 0;
tempY = 0;
});
//定义关闭事件
close.onclick = function () {
if (this._panEndEvt) {
this._panEndEvt.remove();
}
if (this._panEvt) {
this._panEvt.remove();
}
if (this._zoomEndEvt) {
this._zoomEndEvt.remove();
}
if (this._zoomStartEvt) {
this._zoomStartEvt.remove();
}
this._panEndEvt = null;
this._panEvt = null;
this._zoomEndEvt = null;
this._zoomStartEvt = null;
document.getElementById(map.id).removeChild(Div);
}
}
 .esriDivPanel {
position: absolute;
z-index:;
} .esriDivPanel_title {
border: 2px solid #333;
height: 32px;
width: 100%;
background-color: #333;
border-radius: 5px 5px 0px 0px;
} .esriDivPanel_titleClose {
float: right;
width: 24px;
height: 24px;
margin: 5px;
} .esriDivPanel_titleClose span {
display: inline-block;
width: 100%;
height: 100%;
text-align: center;
overflow: hidden;
position: relative;
} .esriDivPanel_titleClose span:hover {
background-color: slategrey;
} .esriDivPanel_titleClose span::before, .esriDivPanel_titleClose span::after {
position: absolute;
content: '';
top: 50%;
left:;
margin-top: -1px;
background-color: #fff;
width: 100%;
height: 3px;
} .esriDivPanel_titleClose span::before {
-webkit-transform: rotate(45deg);
-moz-transform: rotate(45deg);
} .esriDivPanel_titleClose span::after {
-webkit-transform: rotate(-45deg);
-moz-transform: rotate(-45deg);
} .esriDivPanel_titleTxt {
overflow: hidden;
width: 75%;
height: 32px;
line-height: 32px;
margin-left: 5px;
color: white;
} .esriDivPanel_content {
width: 100%;
border: 2px solid #8c9794;
background-color: #f8f8f8;
overflow: hidden;
} .esriDivPanel_triangle {
width: 0px;
height: 0px;
margin-left: 50%;
/* background-color: #8c9794; */
border-top: 20px solid #333;
/* border-bottom: 20px solid rgba(140, 151, 148, 0.57); */
border-right: 40px solid rgba(140, 151, 148, 0);
border-left: 0px solid rgba(140, 151, 148, 0.26);
}

再系统中引用代码就可以直接调用

通过div实现arcgis自定义infowindow的更多相关文章

  1. lzugis——Arcgis Server for JavaScript API之自定义InfoWindow(续)

    同样的标题后面加了一个括弧,不是为了增减博文数量,而确实是上个功能的完善,标注为续,意思是继续上次的内容,来说说如何自定义InfoWindow. 在上一讲中,实现了InfoWindow的显示,但是并没 ...

  2. ArcGIS自定义脚本-通过txt/excel/dbf/table生成多边形要素类

    ArcGIS自定义脚本-通过txt/excel/dbf/table生成多边形要素类 联系方式:谢老师,135-4855-4328,xiexiaokui#qq.com 目的:读取文本文件,常见多边形要素 ...

  3. ArcGIS自定义工具箱-列举损坏的数据源

    ArcGIS自定义工具箱-列举损坏的数据源 联系方式:谢老师,135-4855-4328,xiexiaokui#qq.com 目的:查找地图文档中损坏的数据源链接 使用方法:参数可选,默认为当前(ar ...

  4. ArcGIS自定义工具箱-修复损坏的工作空间

    ArcGIS自定义工具箱-修复损坏的工作空间 联系方式:谢老师,135-4855-4328,xiexiaokui#qq.com 目的:替换数据源的工作空间 用途:针对损坏的数据源,批量进行修复 案例数 ...

  5. ArcGIS自定义工具箱-显示地图文档结构

    ArcGIS自定义工具箱-显示地图文档结构 联系方式:谢老师,135-4855-4328,xiexiaokui#qq.com 目的:显示地图文档mxd的数据组织结构,数据框,图层,表 使用方法: 地图 ...

  6. ArcGIS自定义工具箱-清空工作空间

    ArcGIS自定义工具箱-清空工作空间 联系方式:谢老师,135-4855-4328,xiexiaokui#qq.com 目的:删除工作空间里的要素类,栅格和独立表 使用方法: 例如"C:\ ...

  7. ArcGIS自定义工具箱-字段合并

    ArcGIS自定义工具箱-字段合并 联系方式:谢老师,135-4855-4328,xiexiaokui#qq.com 目的:用指定字符合并两个字段 用例:湖南/长沙=>湖南省长沙市 数据源: 使 ...

  8. ArcGIS自定义工具箱-字段分割

    ArcGIS自定义工具箱-字段分割 联系方式:谢老师,135-4855-4328,xiexiaokui#qq.com 目的:用指定分割符分割字段, 用例:湖南省长沙市=>湖南/长沙 数据源: 使 ...

  9. ArcGIS自定义工具箱-字段值部分替换

    ArcGIS自定义工具箱-字段值部分替换 联系方式:谢老师,135-4855-4328,xiexiaokui#qq.com 目的:替换某个字段中的字符串 用例:湖南省长沙市=>湖南/长沙:临湘县 ...

随机推荐

  1. Python unittest excel数据驱动 写入

    之前写过一篇关于获取excel数据进行迭代的方法,今天补充上写入的方法.由于我用的是Python3,不兼容xlutils,所以无法使用copy excel的方式来写入.这里使用xlwt3创建excel ...

  2. 类型:。net;问题:HQL;结果:HQL: Hibernate查询语言

    HQL: Hibernate查询语言 Hibernate配备了一种非常强大的查询语言,这种语言看上去很像SQL.但是不要被语法结构 上的相似所迷惑,HQL是非常有意识的被设计为完全面向对象的查询,它可 ...

  3. 安卓如何将TXT文件写到特定路径

    其实就一个方法,就不贴所有代码了. /** * 写入文件方法 * @param content */ public static void write(String content) { try { ...

  4. 【271】IDL-ENVI二次开发

    参考:String Processing Routines —— 字符串处理函数 01   STRING 返回字符串. 02   STRCMP 比较字符串,一样返回1,不一样返回0,默认大小写敏感. ...

  5. 【263】Linux 添加环境变量 & 全局 shell 脚本

    Linux电脑添加环境变量 方法一:通过修改 profile 文件添加环境变量 1. 打开终端,输入[vi /etc/profile],如下所示,点击回车 [ocean@ygs-jhyang-w1 L ...

  6. od命令 查看二进制文件

    od命令用于输出文件的八进制.十六进制或其它格式编码的字节,通常用于显示或查看文件中不能直接显示在终端的字符. 以数值进制格式输出:od [选项] 文件 od   -d 文件       --十进制输 ...

  7. uniqid() 函数 和 microtime()函数

    uniqid() 函数基于以微秒计的当前时间,生成一个唯一的 ID.语法 uniqid(prefix,more_entropy) 参数     描述prefix     可选.为 ID 规定前缀.如果 ...

  8. win10获取超级管理员权限脚本实现

    建立一个TXT文件,把下面的脚本贴到里面,然后把后缀改成reg格式,双击添加到注册表就可以了, win10_1703版本亲测可用.... Windows Registry Editor Version ...

  9. java开发中用到的技术(持续更新.....)

    一.数据库 1.数据库连接池:当jdbc连接数据库使用DriverManager 获取时,每次向数据库建立连接的时候都要讲connection加载到内存中,当同时使用的用户数量较大时,会造成服务器不堪 ...

  10. 11.树形Model/View实例

    任务1:显示如图的树形结构 思考: 1.使用QTreeView显示. 2.Model使用QStandardItemModel,qt的一个标准model. 3.QStandardItemModel下每一 ...