功能简介:在MapXtreme+Asp.net的环境下实现轨迹回放功能,经过两天的努力基本实现此功能。但还有部分问题需要解决,求大神们指点迷津,问题会在结尾处提出。

客户端前台页面<asp:ScriptManager ID="ScriptManager1" runat="server" /><%--该js方法写在scriptmanager之后,防止出现Sys未定义错误--%><script type="text/javascript">//获取pagerequestmanager实例后添加事件//在因同步回发或因异步回发而刷新页面上所有内容后触发
        Sys.WebForms.PageRequestManager.getInstance().add_pageLoaded(TrackPlayBack);//轨迹回放函数
        function TrackPlayBack(){var myInput1 = document.getElementById("input1");//用来存放X坐标的控件var myInput2 = document.getElementById("input2");if(myInput1 != null && myInput2 != null){var pointX = myInput1.value.toString();//地图上X坐标点var pointY = myInput2.value.toString();//地图上Y坐标点if(pointX != "" && pointY != ""){var mapImage = document.getElementById("MapControl1_Image");//获取地图控件if(mapImage != null){//传递URL数据var url = "MapController.ashx?Command=TrackPlayBack&PointX=" + pointX +"&PointY=" + pointY+ "&MapAlias=" + mapImage.mapAlias + "&Width=" + mapImage.width +"&Height=" + mapImage.height + "&ExportFormat=" + mapImage.exportFormat + "&Ran=" + Math.random();//使用Ajax局部刷新更新地图          var xmlHttp = CreateXMLHttp();xmlHttp.open("GET",url,false);   xmlHttp.send();   mapImage.src = url; }}}}</script><cc1:MapControl ID="MapControl1" runat="server" Width="800" Height="600" ExportFormat="Jpeg" MapAlias="Map1"/><asp:UpdatePanel ID="UpdatePanel1" runat="server"><ContentTemplate><input id="input1" runat="server" type="text" style="width:200;" /><input id="input2" runat="server" type="text" style="width:200;" /><input id="input3" runat="server" type="text" style="width:200;" /></ContentTemplate><Triggers><asp:AsyncPostBackTrigger ControlID="Timer1" /></Triggers></asp:UpdatePanel><asp:Timer ID="Timer1" runat="server" Enabled="true" Interval="50" ontick="Timer1_Tick" />

客户端中调用的自定义服务器MapBaseCommand类
/// <summary>/// 轨迹回放/// </summary>
    [Serializable]public class TrackPlayBack : MapBaseCommand{private Catalog myCatalog = MapInfo.Engine.Session.Current.Catalog;/// <summary>/// 动画回放图层别名/// </summary>private string animationName = "动画回放";/// <summary>/// 动画回放图元Style/// </summary>private MapInfo.Styles.BitmapPointStyle trackBmpPointStyle = new MapInfo.Styles.BitmapPointStyle("TRUC1-32.BMP", MapInfo.Styles.BitmapStyles.NativeSize, System.Drawing.Color.Blue, 24);public TrackPlayBack(string _animationName, MapInfo.Styles.BitmapPointStyle  _trackBmpPointStyle){Name = "TrackPlayBack";animationName = _animationName;trackBmpPointStyle = _trackBmpPointStyle;}public override void Process(){//获取分站坐标double pointX, pointY;double.TryParse(HttpContext.Current.Request["PointX"].ToString(), out pointX);double.TryParse(HttpContext.Current.Request["PointY"].ToString(), out pointY);//获取实现与执行各种操作的MapContorlModel实例MapControlModel myCtrlModel = MapControlModel.GetModelFromSession();try{//获取地图实例Map myMap = myCtrlModel.GetMapObj(MapAlias);if(myMap != null){//清空地图轨迹回放图元MapInfo.Data.Table myTable = myCatalog.GetTable(animationName);if(myTable != null){#region 清空图元SearchInfo mySearchInfo = MapInfo.Data.SearchInfoFactory.SearchWhere("");IResultSetFeatureCollection myIRetFeaColl = myCatalog.Search(myTable, mySearchInfo);if(myIRetFeaColl != null){foreach(Feature myObj in myIRetFeaColl){myTable.DeleteFeature(myObj);}}#endregion#region 添加图元MapInfo.Geometry.Point myPoint = new MapInfo.Geometry.Point(myMap.GetDisplayCoordSys(), new MapInfo.Geometry.DPoint(pointX, pointY));Feature myFeature = new Feature(myTable.TableInfo.Columns);myFeature.Geometry = myPoint;myFeature.Style = trackBmpPointStyle;myTable.InsertFeature(myFeature);#endregion}}}finally{System.IO.MemoryStream ms = myCtrlModel.GetMap(MapAlias, MapWidth, MapHeight, ExportFormat);StreamImageToClient(ms);}}}

后台代码//此处使用Timer模拟生成的点作为动态轨迹的坐标点
protected void Timer1_Tick(object sender, EventArgs e){double pointX = 4999 + myRandom.NextDouble() * 2;double pointY = pointX;this.input1.Value = pointX.ToString();this.input2.Value = pointY.ToString();}

问题:该功能采用异步更新图元位置,并设置Timer的Interval为50ms(甚至更小),使用IE浏览器坐标点更新速度1-3次/s,使用搜狗浏览器坐标点的更新速度则更慢。怎么样才能使更新速度更快,问题出在何处?是MapXtreme异步更新本身的问题吗?

转载于:https://www.cnblogs.com/Madfrog-Cainiao/p/3155549.html

MapXtreme+Asp.net 动态轨迹(请求大神指点)相关推荐

  1. matlab怎么求一个三元一次方程组的解,用MATLAB求解一个带参数的三元一次方程组,求大神指点!...

    想求一个方程组,改了很多遍都还是出错,请求大神指点 . 代码如下 i=[1 2 3]; %编号为1的机械臂 r=50; %动平台半径 R=210; 想求一个方程组,改了很多遍都还是出错,请求大神指点 ...

  2. MATLAB索引超出矩阵维度,求大神指点错误!

    MATLAB索引超出矩阵维度,求大神指点错误! MATLAB索引超出矩阵维度,求大神指点错误! 最近在做k均值动态聚类的时候,matlab提示索引超出矩阵维度,不知道问题出在哪了. 代码 N1 = 5 ...

  3. java注解接收上传文件,前台:Input type=file 后台获取文件内容用的是spring注解,当地环境上传图片是好的,发布到服务器上图片读取不到,求大神指点...

    当前位置:我的异常网» Java Web开发 » 前台:Input type="file" 后台获取文件内 前台:Input type="file" 后台获取文 ...

  4. python大神写的代码_初学Python,只会写简单的代码。手头有份Python代码,但是调用C模块生成的.pxd和.pyx文件,运行过程总报错,希望大神指点,调试前该做哪些工作呢?...

    报错内容如下: Traceback (most recent call last): File "E:\Python27\setup.py", line 16, in from s ...

  5. Maximo 人员- 应用程序导入,公共操作怎么配置,求大神指点,万分感谢

    Maximo 人员- 应用程序导入,公共操作怎么配置,求大神指点,万分感谢 如何在人员模块中添加-应用程序导入-操作 系统默认的-对象结构-模块的公共操作有-应用程序导入功能

  6. 这算通过审核了么?接下来还有没有什么坑,求大神指点!--酷课堂iOS交流群问答精华整理(201808期)

    酷课堂iOS交流群 我们是一个什么样的组织: 酷课堂iOS交流群,聚集了一群热爱技术.有趣.有料,平均Q龄在10年以上的"老司机",他们遍布在全国/球各地,有知名企业iOS工程师. ...

  7. mesh 协调器 路由器_请TI技术支持和大神指点下,关于zigbee组建mesh路由网络的问题,谢谢!...

    1,问题描述: 我搭建了一个Mesh路由网络,网络中包含设备:1个协调器,20几个路由器节点,没有终端节点. 由于在Mesh网络中,如果协调器掉电,路由器会重新维护该原来的网络,协调器上电后网络的PA ...

  8. python导入pyx文件_初学Python,只会写简单的代码。手头有份Python代码,但是调用C模块生成的.pxd和.pyx文件,运行过程总报错,希望大神指点,调试前该做哪些工作呢?...

    报错内容如下: Traceback (most recent call last): File "E:\Python27\setup.py", line 16, in from s ...

  9. http.client.InvalidURL: nonnumeric port: 'yourport' 运行报错 求大神指点。。。。。。实在是不知道怎么弄了

    @(http.client.InvalidURL: nonnumeric port: 'yourport' 运行报错 求大神指点......实在是不知道怎么弄了) import numpy as np ...

  10. php网站老是出ErrorCode=0x17,操作点几下就出,求大神指点,能帮忙解决的滴滴

    php网站老是出ErrorCode=0x17,操作点几下就出,求大神指点,能帮忙解决的滴滴

最新文章

  1. Scala的异常处理
  2. CommandBehavior.CloseConnection有何作用
  3. bat 取得服务列表_基于IDEA热部署更新服务器Tomcat类,服务器Tomcat热更新
  4. Android之自定义View以及画一个时钟
  5. 一个用于提取简体中文字符串中省,市和区并能够进行映射,检验和简单绘图的python模块...
  6. ajax+对号,操作成功动画效果(圆圈变成勾号)
  7. mysql中profile的使用
  8. Latex中关于参考文献的一些经验
  9. 安装Electron
  10. 机器学习-模型评估方法sklearn对MINST数据集实现
  11. 贵州学业水平测试信息技术软件,贵州信息技术学业水平考试系统操作手册.doc...
  12. B站接口获取图片资源出现403的解决方案
  13. Java操作ES数据库进行分页https://blog.csdn.net/lom9357bye/article/details/64500638?utm_source=blogxgwz0
  14. Java第十二周作业
  15. 怎么看电脑支持多少兆网速_怎么看电脑网卡多少兆_如何查看网卡多少兆-系统城...
  16. Janus源码分析(1)——源码结构
  17. 树的递归遍历与递归序
  18. 超详细的SpringBoot+Mybatis+Vue整合笔记
  19. hadoop的journalnode节点出现Can‘t scan a pre-transactional edit log错误解决办法
  20. BSD操作系统大盘点:四种主流BSD

热门文章

  1. 艾肯6nano声卡安装调试教程
  2. linux中rm件命令,Linux rm命令详解
  3. Windows Live Writer插件开发经验
  4. uniapp-App支付宝授权小记
  5. 什么是实例?什么是引用?
  6. js获取传统节假日_js能获取一年中所有的法定节假日,有这样的程序吗?
  7. Transformer BEV perception
  8. Linux中的系统语言包及UTF-8、en_US.UTF-8和zh_CN.UTF-8的区别
  9. 大数据开发常见面试问题总结
  10. 师太、老衲、贫道的爱恨全集