基于GPS实时信号的WebGIS模拟[2]
我们继续来讲一讲如何在B/S架构的WebGIS上实现GPS实时信号的显示,在上一篇中,我通过一个web服务,能够产生一个随机的坐标点。而接下来,肯定是要能够定时触发一个访问该服务的请求才行。JS中本来有setTimeOut和setInterval两个函数,为了便于管理,我使用了Ext的定时器完成。
下面是发送请求的函数:
var gpsTask = function(){
Ext.Ajax.request({
url:'http://nbjbt/cad2gis_service/getgpspoint.ashx',
method:'post',
headers:{'Content-Type':'application/json;charset=utf-8'},
success:function(response, options){},
failure:function(response, options){}
});
}
如何发送以及停止发送呢,也很简单,下面的startGPSTask函数能够每隔5秒运行一次gpsTask函数,而stopGPSTask函数则会停止该触发(Ext.TaskMgr.stop方法却不能停止触发某个具体的函数执行,不知道为什么?!):
function startGPSTask(){
Ext.TaskMgr.start({
run: gpsTask,
interval: 5000
});
}
function stopGPSTask(){
Ext.TaskMgr.stopAll();
}
道理很明显了,剩下的显示,便是通过Graphic对象在某个动态图形层中的位置变化而不断改变地图的当前中心点,这个处理过程自然是在success的处理函数中完成的。具体的操作过程也并不复杂,即记录前后两个点,生成一条path,然后添加到polyline中,清空图形层,再将新的polyline赋给graphic,然后将graphic添加到图形层中去,在此过程中不断改变地图的中心位置,这样就形成了动态变化的效果。具体代码摸索有些复杂,但并不困难。


Related Items
Comments
车辆图片实际上是一个PictureMarkerSymbol的Graphic对象,不断改变该对象的X和Y值即可。
谢谢你的解答,我试试
将gpsTask 赋值给一个全局变量如
VGS.GPS.LBSTask={
run:this._requestGpsDataHandler,
scope:this,
interval: 10*1000 //1 second
};
Ext.TaskMgr.start(VGS.GPS.LBSTask);
在停止的时候调用
Ext.TaskMgr.stop(VGS.GPS.LBSTask);
而不是stopall.
Leave a comment
Or, take a look at Archives and Categories
蒋兄,你好。请问AGS JavaScript API中用什么方法可以使我自定义的车辆图片在地图上根据实时得到的经纬度进行移动??头一次接触,望请解答,谢谢