软件版本:SuperMap IS.NET 5.3.0.9628

问题源起:在SuperMap IS.NET 5.3中WebControl和AjaxControl分别提供了两组控件来实现地图的打印功能,分别名为PrintToolControl和MapPrintControl。两者配合即能实现地图控件(MapControl)内容打印和另存为图片。

在AjaxControl中,因为地图控件内容是由多个256*256px的图片组成,采用瓦片金字塔技术组织。所以地图控件显示的内容并不是一张完整的地图,所以也为保存当前地图提出了一个难题。

不是有控件吗?呵呵~的确有控件,不过控件存在以下问题:1.可能拖拽了PrintToolControl导致NullReferenceException;2.PrintToolControl能实例化,不过点击后无响应。

所以还得自己干,才能丰衣足食啊!

首先咱们采用AjaxControl的方法,用一个Button来实现保存地图,代码如下:

[Csharp] view plaincopyprint?
  1. protected void Button1_Click(object sender, EventArgs e)
  2. {
  3. MapParam param = MapControl1.GetCurrentMapParam();
  4. param.ReturnImage = true;
  5. param.Viewer = new PixelRect((int)MapControl1.Width.Value, (int)MapControl1.Height.Value);
  6. param.ViewBounds = new MapRect(MapControl1.ViewBounds.LeftBottom, MapControl1.ViewBounds.RightTop);
  7. //Response.Write(MapControl1.ViewBounds.LeftBottom.X.ToString());
  8. MapImage mi = MapControl1.GetMapImage(param, 100);
  9. if (mi != null)
  10. {
  11. Response.Write(mi.MapUrl);   //输出地图控件图片地址
  12. }
  13. }

protected void Button1_Click(object sender, EventArgs e) { MapParam param = MapControl1.GetCurrentMapParam(); param.ReturnImage = true; param.Viewer = new PixelRect((int)MapControl1.Width.Value, (int)MapControl1.Height.Value); param.ViewBounds = new MapRect(MapControl1.ViewBounds.LeftBottom, MapControl1.ViewBounds.RightTop); //Response.Write(MapControl1.ViewBounds.LeftBottom.X.ToString()); MapImage mi = MapControl1.GetMapImage(param, 100); if (mi != null) { Response.Write(mi.MapUrl); //输出地图控件图片地址 } } 再采用AjaxScript脚本方式实现下(我更喜欢这个),后台发送一个xmlhttpRequest请求到服务器端的MapHandler,生成一张图片,并返回地图地址。

[JScript] view plaincopyprint?
  1. // 保存当前地图
  2. function saveMap()
  3. {
  4. var param = new Object();
  5. param = MapControl1.GetMapParam();
  6. var pixelRect = MapControl1.GetSize();
  7. param.SetPixelRect(pixelRect);
  8. MapControl1.GetMapImage(param, onSaveMapComplete, onSaveMapError);
  9. }
  10. function onSaveMapComplete(URL)
  11. {
  12. if(URL != null)
  13. {
  14. if( URL.length > 0)
  15. {
  16. window.open(URL,'地图保存','menubar=yes,titlebar=yes,toolbar=no,scrollbars=no,location=no,status=no');
  17. }
  18. }
  19. }
  20. function onSaveMapError(responseText)
  21. {
  22. alert(responseText);
  23. }
// 保存当前地图
function saveMap()
{var param = new Object();param = MapControl1.GetMapParam();var pixelRect = MapControl1.GetSize();param.SetPixelRect(pixelRect);    MapControl1.GetMapImage(param, onSaveMapComplete, onSaveMapError);
}function onSaveMapComplete(URL)
{if(URL != null){if( URL.length > 0){window.open(URL,'地图保存','menubar=yes,titlebar=yes,toolbar=no,scrollbars=no,location=no,status=no');}}
}function onSaveMapError(responseText)
{alert(responseText);
}

补充下,如果保存的地图需要打印,可以采用GetMapImageByDpi方法,并设定合适的Dpi即可。不过AjaxScript的GetMapImageByDpi方法的输入参数有误,大家稍微注意下!

据说控件的问题在5.3.2版本得以解决,咱们一起试目以待吧:)

SuperMap IS.NET保存地图之Ajax篇(转)相关推荐

  1. Cartographer使用篇:保存地图

    工作环境: ubuntu16.04+ROS(Kinetic)+Cartographer-1.0.0 地图文件 .pbstream cartographer格式地图文件,本质上是一个压缩protobuf ...

  2. Unity TileMap 存档 保存地图

    关注公众号,获取更多干货. 下面是正文: 最近在恶补Unity的一些模块,前几天朋友推荐我看一下Unity2017.2以上才支持的TileMap,他说用这个做2D关卡贼方便,所以我就去看了一眼,的确很 ...

  3. 地图构建两篇顶级论文解析

    地图构建两篇顶级论文解析 一.基于声纳的密集水下场景重建 标题:Dense, Sonar-based Reconstruction of Underwater Scenes 作者:Pedro V. T ...

  4. openlayers入门开发系列之地图属性查询篇

    本篇的重点内容是利用openlayers实现地图属性查询功能,效果图如下: 实现思路: 模糊查询点击事件 //模糊查询 $("#swatchQuery").bind("c ...

  5. AJAX框架简笔画图片教程,jquery 框架使用教程 AJAX篇

    jquery 框架使用教程 AJAX篇 更新时间:2009年10月11日 14:47:26   作者: 正好项目中准备使用thickbox,于是干脆抛弃prototype.js,看起jquery.js ...

  6. 百度2012年新进本科技术类员工培训教材ajax篇

    百度2012年新进本科技术类员工培训教材ajax篇 1. //告诉浏览器不要缓存数据 header("Cache-Control: no-cache"); //这里两句话很重要,第 ...

  7. 前端面试大全(Ajax篇——面试官这样问,你答得上来吗?)

    目录 面试系列 内容介绍 1.Ajax 是什么? 如何创建一个Ajax? ①.Ajax ②.异步 ③.步骤 2.同步和异步的区别? ①.同步 ②.异步 3.如何解决跨域问题? 4.http状态码有那些 ...

  8. cartographer 用自己的机器人建图、保存地图

    这两天跑了以下google的cartographer算法,效果不错,比gmapping效果要好. cartographer的安装网上很多教程,主要按照张明明的方法,https://github.com ...

  9. 百度地图总结第二篇--POI检索功能

    简介: 目前百度地图SDK所集成的检索服务包括:POI检索.公交信息查询.线路规划.地理编码.行政区边界数据检索.在线建议查询.短串分享(包括POI搜索结果分享.驾车/公交/骑行/步行路线规划分享.反 ...

最新文章

  1. 浅析网站标题优化该如何进行?
  2. iOS消息推送机制原理与实现
  3. day3 程序流程控制
  4. trie树查找前缀串_Trie数据结构(前缀树)
  5. mysql 无法启动 查看原因_Mysql服务无法启动问题
  6. 重要的数据结构--队列(C语言实现)
  7. eclips 创建 maven项目
  8. springmvc json串的null值替换为空值
  9. 煤矿AI智能视频分析识别系统解决方案
  10. 23hh小说网——爬虫0.1python
  11. Html点击复制文本内容
  12. Android Audio音频系统之深入浅出
  13. TSC2004 电阻式触摸屏控制器驱动问题
  14. 网速监测-window小应用
  15. 张振民北京计算机专修学院,工行甘肃省分行张振民一行来校考察交流
  16. 统计学第一篇,均值、中位数、众数
  17. 想开服,又没有技术怎么办?传奇开服技术要学多久?开服技术好学吗
  18. [SDOI2008]山贼集团【树上背包+状压】
  19. 三十二楼层选几层最好_【高层住宅几层最好】33、32层高层住宅几层最好,26、18高层住宅几层最好-吉屋网知识专区...
  20. EXCEL-名称管理器

热门文章

  1. 大数据_Spark框架_快速上手_word count 案例分析---Spark工作笔记0005
  2. makefile工作笔记0002---gcc -O0 -O1 -O2 -O3 四级优化选项及每级分别做什么优化
  3. Netty工作笔记0051---Netty核心模块2
  4. 架构部署001---双机集群(HA)系统
  5. ASP.Net学习笔记007--ASP.Net Input版自增
  6. android学习笔记---48_实现软件国际化,实现文字国际化,和图片国际化
  7. Jonit Bayesian 的推导
  8. NLP之路-Deep Learning for NLP 文章列举
  9. Windows平台上安装搭建iPhone/iPad的开发环境
  10. 【10天基于STM32F401RET6智能锁项目实战第2天】GPIO与寄存器