SharpMap AjaxMapControl 中 Zoomin/Zoomout 操作时冻结问题
2007-06-13 01:18
363 查看
1、现象:
在放大/缩小操作时,当 Map.width = Map.MaximumZoom 时再次执行Zoomout 或者当 Map.width = Map.MinimumZoom 时再次执行Zoomin,浏览器显示的地图处于冻结状态(刷新地图停止);同时,鼠标光标处于长久的等待(wait)状态。
2、原因:
客户端 javascript 脚本在响应鼠标事件处理时发生事件重入。
3、解决方法:
修改AjaxMap.js 中的SharpMap_BeginZoom 函数
function SharpMap_BeginZoom(obj,x,y,zoomval)
{
if(obj.zoomEnded==0) return;
if(obj.zoom/zoomval<obj.minZoom) zoomval = obj.zoom/obj.minZoom;
if(obj.zoom/zoomval>obj.maxZoom) zoomval = obj.zoom/obj.maxZoom;
//当控制动态缩放的zoomval值为1时停止动态缩放并退出
if(Math.abs(1-zoomval)<0.0001) return;
obj.zoomEnded=0;
obj.container.style.cursor = 'wait';
var position = WebForm_GetElementPosition(obj.container);
var imgX = x-position.x;
var imgY = y-position.y;
var center = SharpMap_PixelToMap(imgX+(obj.container.offsetWidth*0.5-imgX)/zoomval,imgY+(obj.container.offsetHeight*0.5-imgY)/zoomval,obj);
obj.zoom = obj.zoom/zoomval;
obj.minX = center.x - obj.zoom*0.5;
obj.maxY = center.y + obj.zoom*obj.container.offsetHeight/obj.container.offsetWidth*0.5;
SharpMap_BeginRefreshMap(obj,1); //Start refreshing the map while we're zooming
SharpMap_DynamicZoom((position.x-x)*(zoomval-1),(position.y-y)*(zoomval-1),zoomval,0.0,obj);
}
4、修改后的测试结果:
a) 解决了鼠标 Click 缩放操作冻结问题;
b) 鼠标滚轮缩放操作仍有冻结(原因猜测中……);
在放大/缩小操作时,当 Map.width = Map.MaximumZoom 时再次执行Zoomout 或者当 Map.width = Map.MinimumZoom 时再次执行Zoomin,浏览器显示的地图处于冻结状态(刷新地图停止);同时,鼠标光标处于长久的等待(wait)状态。
2、原因:
客户端 javascript 脚本在响应鼠标事件处理时发生事件重入。
3、解决方法:
修改AjaxMap.js 中的SharpMap_BeginZoom 函数
function SharpMap_BeginZoom(obj,x,y,zoomval)
{
if(obj.zoomEnded==0) return;
if(obj.zoom/zoomval<obj.minZoom) zoomval = obj.zoom/obj.minZoom;
if(obj.zoom/zoomval>obj.maxZoom) zoomval = obj.zoom/obj.maxZoom;
//当控制动态缩放的zoomval值为1时停止动态缩放并退出
if(Math.abs(1-zoomval)<0.0001) return;
obj.zoomEnded=0;
obj.container.style.cursor = 'wait';
var position = WebForm_GetElementPosition(obj.container);
var imgX = x-position.x;
var imgY = y-position.y;
var center = SharpMap_PixelToMap(imgX+(obj.container.offsetWidth*0.5-imgX)/zoomval,imgY+(obj.container.offsetHeight*0.5-imgY)/zoomval,obj);
obj.zoom = obj.zoom/zoomval;
obj.minX = center.x - obj.zoom*0.5;
obj.maxY = center.y + obj.zoom*obj.container.offsetHeight/obj.container.offsetWidth*0.5;
SharpMap_BeginRefreshMap(obj,1); //Start refreshing the map while we're zooming
SharpMap_DynamicZoom((position.x-x)*(zoomval-1),(position.y-y)*(zoomval-1),zoomval,0.0,obj);
}
4、修改后的测试结果:
a) 解决了鼠标 Click 缩放操作冻结问题;
b) 鼠标滚轮缩放操作仍有冻结(原因猜测中……);
相关文章推荐
- SharpMap AjaxMapControl 中 Zoomin/Zoomout 操作时冻结问题
- Sharpmap AjaxMapControl 分析
- Ajax 跨域问题(JSONP && Access-Control-Allow-Origin)
- pl/sql 与vss 集成问题:Could not activate Plug-In: Version Control Interface 1.2
- 解决Control character in cookie value, consider BASE64 encoding your value 问题
- hadoop下 Type mismatch in value from map的问题
- .net 使用AjaxControlToolkit.dll 遇到的"Sys"未定义问题
- The type or namespace name 'AjaxControlToolkit' could not be found in the global namespace
- 解决Ajax跨域问题:Origin xx is not allowed by Access-Control-Allow-Origin.
- UpdatePanel中GridView的分页问题 GridView中的超链接 (输入一半带提示功能)ASP.NET AJAX Control Toolkit 新扩展特性:AutoCompleteExtender
- 3D- rotaion and zoom in/out pan function in opengl
- ajax操作时一些问题
- hadoop问题Type mismatch in value from map解决方法
- "Out of memory in function ..." 问题 的解决之道
- [ASP.NET AJAX]Important notes when we create web service methods for some extenders in AjaxControlToolkit package
- VS2003升级到2005后使用AjaxControlToolkit的一诡异问题(已找到解决办法,求解原因)
- (转)Map out your future, but do it in pencil.
- ajax请求node.js接口时出现跨域问题Access-Control-Allow-Origin
- android学习问题记录(unexpected text found in lagout file""")
- magento 后台保存分类失败,无法保存产品,ajax一直在转的问题 的解决 - Cannot edit categories in Magento