(一)概述
sharpmap中的ajaxmapcontrol使用asp.net 2.0提供的ICallbackEventHandler接口实现页面无刷新地图更新。

本质上ICallbackEventHandler接口底层是XMLHTTP,而XMLHTTP是当前非常热门的Ajax的基础。这也许就是sharpmap 作者将这个实现了ICallbackEventHandler接口的地图控件命名为ajaxmapcontrol 的原因吧。

ICallbackEventHandler机制是ajaxmapcontrol的核心所在。单纯从编程角度看,ICallbackEventHandler的编程比使用ms.ajax之类的开发套件编程要复杂一些。而然,ICallbackEventHandler 快捷轻量级特性,在ajaxmapcontrol样的控件中更为适用。

(二)Sharpmap AjaxMapControl 组成
ajaxmapcontrol 实际上是由两个部分组成的:一个是服务器控件;另一个是名为AjaxMap.js 客户端脚本文件。

(三)工作过程
ajaxmapcontrol 主要工作过程
1.   客户端浏览器请求带有 ajaxmapcontrol 的网页。
2.   在浏览器中,用户用鼠标操纵地图图象。鼠标的点击/拖动事件首先被来自AjaxMap.js 脚本函数截获,接着,脚本对服务器发出回调请求(WebForm_DoCallback)。这个调用采用 XMLHTTP 方式请求服务器 Generic Handler,并将鼠标交互产生的各个参数以 Get 方式发送给 Generic Handler;在调用WebForm_DoCallback 时,WebForm_DoCallback 也向 XMLHTTP 注册一个接收处理函数。
3.   在服务器上, Generic Handler 响应客户端回调请求,并根据来自客户端的参数(都是与地图图象有关的参数)生产新的地图图象。并将图象返回给客户端。
4.   XMLHTTP 利用注册的接收处理函数,将来自服务器的新的地图图象显示在页面上。

(四)说明
1.   虽然在 AjaxMapControl 实现了 ICallbackEventHandler 接口,但在服务器端真正响应客户端回调请求的并不是控件本身。服务器端响应客户请求的处理程序由 Generic Handler 完成。
2.   脚本文件是 AjaxMapControl 内嵌资源(Embedded Resource)并被编译到 DLL 中。在 AssemblyInfo.cs 加入[assembly: System.Web.UI.WebResource("SharpMap.UI.Web.UI.Ajax.AjaxMap.js", "text/javascript")],当在客户端浏览器中请求带有ajaxmapcontrol网页后,该网页就能通过 WebResource.axd 请求封入 DLL 的 AjaxMap.js 脚本文件。这样做的好处是可以在客户端缓冲该脚本文件。
3.   在浏览器中,引发脚本向服务器发出回调的操作有两个:拖动地图(Pan)操作和缩/放操作(Zoom in/out)操作;
4.   客户端脚步函数 SharpMap_BeginRefreshMap(obj,dofade)  完成对服务器回调请求。

转载于:https://www.cnblogs.com/protorock/archive/2007/06/11/779784.html

Sharpmap AjaxMapControl 分析相关推荐

  1. Web.config详解+asp.net优化(1)

    一.认识Web.config文件 Web.config 文件是一个xml文本文件,它用来储存 asp.NET Web 应用程序的配置信息(如最常用的设置asp.NET Web 应用程序的身份验证方式) ...

  2. Web.config详解+asp.net优化

    Web.config详解+asp.net优化(1) 一.认识Web.config文件 Web.config 文件是一个xml文本文件,它用来储存 asp.NET Web 应用程序的配置信息(如最常用的 ...

  3. ASP.NET的Page_Load事件及相关转载

    Page_Load,即页面载入要执行的事件; Page_Load的执行分为两种情况;  1.Page_Load事件的执行是在第一次加载页面时发生(即为了响应客户的请求);  2.Page_Load事件 ...

  4. 利用Arcgis Engine 二次开发的使用和总结

    Arcgis Engine 初体验 先放一张第一版系统的图,由于公司机密不能提供源码,但是各个小功能提供源码,为需要的同仁提供些许帮助. 接下来进入正题,将逐一展示利用Arcgis Engine开发的 ...

  5. C#.NET开源项目、机器学习、商务智能

    所以原谅我,不能把所有的都发上来,太杂了,反而不好. 1..NET时间周期处理组件 这个组件很小,主要是对时间日期,特别是处理时间间隔以及时间范围非常方便.虽然.NET自带了时间日期的部分功能,但可能 ...

  6. 【转载】利用ArcGIS Engine 二次开发的使用和总结

    文章目录 ArcGIS Engine 初体验 一.较完全编辑功能GIS程序 二.字段搜索要素和空间搜索要素GIS程序 三.图层重叠搜索GIS程序 四.要素合并.裁剪及检测要素重叠GIS程序 五.自定义 ...

  7. SharpMap分析手记

    网上搜的,推荐看看. http://blog.csdn.net/suen/archive/2008/04/19/2306346.aspx 转载于:https://www.cnblogs.com/sou ...

  8. SharpMap在web上的应用

    最近公司用SharpMap做了一个做桌面程序,它是一个开源的Gis项目,功能还可以,最大的特点就是简单易用,这里介绍下怎么在web下使用: 这次我们根据demo先了解一下如何show一个地图.这是最基 ...

  9. SharpMap学习(2)

    在经过第一篇的简单学习之后,我们开始了解一些稍微有点儿意思的东西,进一步掌握和学习利用sharpmap进行开发的技巧. 这次,我们主要是跟大家一起学习一下如何根据地图上的一个点,来查询这个点所在的对象 ...

最新文章

  1. 构建高性能服务(三)Java高性能缓冲设计 vs Disruptor vs LinkedBlockingQueue--转载
  2. 树转换为二叉树小技巧
  3. Java Annotation详解
  4. 多线程与高并发(七):详解线程池 - 自定义线程池,JDK自带线程池,ForkJoin,源码解析等
  5. 直接调用支持ACE的product search API
  6. TCP Socket 粘包
  7. access没有使用 对象的必要权限_厨房有没有必要安燃气报警器 使用燃气要注意哪些安全性措施...
  8. linux windows死机,linux死机的处理方式
  9. win10 免安装版本的MySQL的下载安装和配置
  10. HDU2544 最短路【Dijkstra算法】
  11. Python基础函数学习笔记(一)
  12. 【Todo】已经打开的页面需要清掉的坑
  13. 全国所有火车站(12306官方客运营业站站点)很全!!
  14. Android 播放本地 ts 格式视频
  15. signature=cc8d613f503e9b933c233da06afc0fc6,襄阳市公安局交通警察支队违法车辆信息公告20210118...
  16. 网络工程师_记录的一些真题_2017上半年上午
  17. 第一个安卓应用小程序--浅浅仿照微信发现界面
  18. C#getPixel和内存法读取灰度图信息
  19. Rust 管理员命令列表
  20. 记录Google被和谐的日子

热门文章

  1. java中for 的几种常见用法
  2. linux yum未找到命令,解决yum命令失效,vim: command not found
  3. 查询jdk支持的 tsl协议版本
  4. Android上传图片的两种方式
  5. 交换两个数不是三个数。
  6. php设置pem,php – 如何将OpenSSH公钥文件格式转换为PEM
  7. word敲空格文字不后退_聊聊Word中的几种缩进(中)
  8. redis能模糊删除key吗_redis 模糊匹配和批量删除
  9. 均值滤波python实现_python手写均值滤波
  10. 图像处理基础(五)_图像像素中通道概念解析