一个ArcGIS Javascript API的BUG和处理办法 - 调用两次Draw工具条deactivate方法导致的错误
2009-01-19 15:23
846 查看
一个ArcGIS Javascript API的BUG和处理办法 - 调用两次Draw工具条deactivate方法导致的错误
在用户处于编辑状态时,如果需要放大地图,则要点击放大按钮,这时需要调用DrawToolbar的deactivate方法,如果再次启动则调用activate(...)方法,这逻辑上也没问题,但今天调试的时候发现一个bug,即如果用户点击了放大按钮,我们调用了DrawToolbar的deactivate方法,而后用户又点击了缩小按钮或漫游按钮,DrawToolbar的deactivate方法被再次调用,这时鼠标与地图的交互就出现了问题,拉框矩形并没有随着鼠标移动的轨迹正确的移动。经调试发现这个bug只在多次调用DrawToolbar的deactivate方法时出现。
于是迅速的查了一下Javacript api的sdk,看有没有DrawToolbar的某个属性表明当前是激活还是未激活状态的属性,可惜是没有,那么我们就只有用一个全局的变量来标识当前DrawToolbar的状态了,于是,如下的代码可以绕过这个比较明显的bug:
//是否启用Draw工具条
var EnableDraw = false;
//激活绘制图形工具条(Workaround:因为它没有属性表明状态,所以用一个全局变量来对其状态进行标识)
function ActivateDrawToolbar()
{
console.log(EnableDraw);
if (EnableDraw === true)
{
return;
}
else
{
EnableDraw = true;
drawToolbar.activate(esri.toolbars.Draw.POINT);
}
console.log(EnableDraw);
}
//停止绘制图形工具条(Workaround:因为它没有属性表明状态,所以用一个全局变量来对其状态进行标识)
function DeactivateDrawToolbar()
{
console.log(EnableDraw);
if (EnableDraw === true)
{
drawToolbar.deactivate();
EnableDraw = false;
}
else
{
return;
}
console.log(EnableDraw);
}
在用户处于编辑状态时,如果需要放大地图,则要点击放大按钮,这时需要调用DrawToolbar的deactivate方法,如果再次启动则调用activate(...)方法,这逻辑上也没问题,但今天调试的时候发现一个bug,即如果用户点击了放大按钮,我们调用了DrawToolbar的deactivate方法,而后用户又点击了缩小按钮或漫游按钮,DrawToolbar的deactivate方法被再次调用,这时鼠标与地图的交互就出现了问题,拉框矩形并没有随着鼠标移动的轨迹正确的移动。经调试发现这个bug只在多次调用DrawToolbar的deactivate方法时出现。
于是迅速的查了一下Javacript api的sdk,看有没有DrawToolbar的某个属性表明当前是激活还是未激活状态的属性,可惜是没有,那么我们就只有用一个全局的变量来标识当前DrawToolbar的状态了,于是,如下的代码可以绕过这个比较明显的bug:
//是否启用Draw工具条
var EnableDraw = false;
//激活绘制图形工具条(Workaround:因为它没有属性表明状态,所以用一个全局变量来对其状态进行标识)
function ActivateDrawToolbar()
{
console.log(EnableDraw);
if (EnableDraw === true)
{
return;
}
else
{
EnableDraw = true;
drawToolbar.activate(esri.toolbars.Draw.POINT);
}
console.log(EnableDraw);
}
//停止绘制图形工具条(Workaround:因为它没有属性表明状态,所以用一个全局变量来对其状态进行标识)
function DeactivateDrawToolbar()
{
console.log(EnableDraw);
if (EnableDraw === true)
{
drawToolbar.deactivate();
EnableDraw = false;
}
else
{
return;
}
console.log(EnableDraw);
}
相关文章推荐
- 一个ArcGIS Javascript API的BUG和处理办法 - 调用两次Draw工具条deactivate方法导致的错误
- ArcGIS api for javascript——地理处理任务-计算一个可视域
- web项目调用arcgis api for JS离线包报“https://[HOSTNAME_AND_PATH_TO_JSAPI]dojo/...”错误解决方法
- arcgis javascript api 调用方法测试一例
- ArcGIS Server API for JavaScript调用错误:已阻止跨源请求:同源策略禁止读取位于......
- 曲线解决CMFCPropertyGridCtrl掩码的bug2009年12月30日 星期三 下午 01:24CMFCPropertyGridCtrl这个控件当用到掩码时,会有问题.解决办法用其他掩码替代.下面是一个IP掩码处理方法.代码如下
- C#编译器优化那点事 c# 如果一个对象的值为null,那么它调用扩展方法时为甚么不报错 webAPI 控制器(Controller)太多怎么办? .NET MVC项目设置包含Areas中的页面为默认启动页 (五)Net Core使用静态文件 学习ASP.NET Core Razor 编程系列八——并发处理
- 一个页面使用两次timepicker.js引起的Maximum call stack size exceeded问题解决办法及bug修复
- 一个将Google Maps API与ArcGIS JavaScript API for GMaps结合的例子
- 无法显式调用运算符或访问器 错误处理方法
- 本人arcgis api for javascript中常见错误总结
- 【C#】对异步请求处理程序IHttpAsyncHandler的理解和分享一个易用性封装 【手记】走近科学之为什么明明实现了IEnumerable<T>的类型却不能调用LINQ扩展方法 【手记】手机网页弹出层后屏蔽底层的滑动响应 【手记】ASP.NET提示“未能创建类型”处理 【Web】一个非常简单的移动web消息框 【手记】解决EXCEL跑SQL遇“查询无法运行或数据库表无法打开...”
- 关于ASP.NET调用EXCEL导致错误80070005的解决办法
- 用ARCGIS处理影像的时候遇到的一个小问题及处理方法
- 动态方法调用 在Struts2中动态方法调用有三种方式,动态方法调用就是为了解决一个Action对应多个请求的处理,以免Action太多 第一种方式:指定method属性 这种方式我们前面已经用到过
- “SecureCRT遇到一个致命的错误且必须关闭”处理办法
- ArcGIS api for javascript——以地理处理结果为条件查询地图
- perl安装不全导致的Can't locate Time/HiRes.pm in @INC错误的处理方法
- ora-12154 tns 无法处理服务名(执行的程序途径不一致导致,枚举网络数种方法,大家还有其他解决办法?)
- 更新数据库所有表的某一个指定字段 ,附加对‘将 varchar 值转换为数据类型为 int 的列时发生语法错误’处理方法