`
ninggy
  • 浏览: 114252 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类
最新评论

openlyers实现的简单轨迹的绘制

360 
阅读更多

由于项目中要实现一个动态轨迹的绘制,所以就先做类了一个简单的demo,绘制轨迹时候没有动画效果。主要代码:

 OpenLayers.DOTS_PER_INCH = 90.71428571428572;
OpenLayers.Util.onImageLoadErrorColor = 'transparent';

var map;
var vectors;
var v_array =[];
var intervalID;var intervalID1;
 function init(){
  var mapOptions = { 
    resolutions: [0.703125, 0.3515625, 0.17578125, 0.087890625, 0.0439453125, 0.02197265625, 0.010986328125, 0.0054931640625, 0.00274658203125, 0.001373291015625, 6.866455078125E-4, 3.4332275390625E-4, 1.71661376953125E-4, 8.58306884765625E-5, 4.291534423828125E-5, 2.1457672119140625E-5, 1.0728836059570312E-5, 5.364418029785156E-6, 2.682209014892578E-6, 1.341104507446289E-6, 6.705522537231445E-7, 3.3527612686157227E-7, 1.6763806343078613E-7, 8.381903171539307E-8, 4.190951585769653E-8, 2.0954757928848267E-8, 1.0477378964424133E-8, 5.238689482212067E-9, 2.6193447411060333E-9, 1.3096723705530167E-9, 6.548361852765083E-10],
    projection: new OpenLayers.Projection('EPSG:4326'),
    maxExtent: new OpenLayers.Bounds(-180.0,-90.0,180.0,90.0),
    units: "degrees",
    controls: []
    };
    map = new OpenLayers.Map('map', mapOptions );
    map.addControl(new OpenLayers.Control.PanZoomBar({
      position: new OpenLayers.Pixel(2, 15)
    }));
    map.addControl(new OpenLayers.Control.Navigation());
    map.addControl(new OpenLayers.Control.Scale($('scale')));
    map.addControl(new OpenLayers.Control.MousePosition({element: $('location')}));
    var wms = new OpenLayers.Layer.WMS(
    "gz","http://127.0.0.1:8000/geowebcache/service/wms",
    {layers: 'gz', format: 'image/png' },
    { tileSize: new OpenLayers.Size(256,256) }
    );
    map.addLayers([wms]);
    map.setCenter(new OpenLayers.LonLat(113.24733, 23.10518), 13);
    map.addControl(new OpenLayers.Control.LayerSwitcher());
};
///===
// Needed only for interaction, not for the display.
function onPopupClose(evt) {
  // 'this' is the popup.
  selectControl.unselect(this.feature);
}
function onFeatureSelect(evt) {
  feature = evt.feature;
if(feature.attributes.sd){
  popup = new OpenLayers.Popup.FramedCloud("featurePopup", feature.geometry.getBounds().getCenterLonLat(), new OpenLayers.Size(100, 100), "<h2>" +        feature.attributes.colors + "dscdcsdcdscds</h2>"
          + feature.attributes.color, null, true, onPopupClose);
  feature.popup = popup;
  popup.feature = feature;
  map.addPopup(popup);
}
}
function onFeatureUnselect(evt) {
  feature = evt.feature;
  if (feature.popup&&feature.attributes.sd) {
    popup.feature = null;
    map.removePopup(feature.popup);
    feature.popup.destroy();
    feature.popup = null;
  }
}
//===

//同时绘制多个演习要素
function drawBatchGPS(){
    //是否完成所有要素轨迹
    //每次都得运行所有要素轨迹
    for(i in v_array){
      drawGPS(i);
    }
    //end for
  }
  //加载点
function loadGPS(){
    window.clearInterval(intervalID);   
     var interval = document.getElementById("mins").value;
    intervalID = window.setInterval("drawBatchGPS()",interval*1000);  
  }
var stemppoint = [];//临时点
var sfeat = [];//绘制要素的临时数组
var colors =[];
  //开始
function startGPS(){
removeGPS();
  var v_style = new OpenLayers.StyleMap({
        "default" : {
          externalGraphic : "${image}",
          strokeColor : "${color}",
          fillColor : "${color}",
          strokeOpacity : 1,
          strokeWidth : 1,
          pointRadius : "${radius}",
          rotation : "${angle}",
          fillOpacity : "${opacity}"
        },
        "select" : {
          cursor : "pointer",
          strokeColor : "blue",
          fillColor : "blue"
        }
      });
  vectors = new OpenLayers.Layer.Vector("要1", {
        styleMap : v_style
      });
      map.addLayer(vectors);
      v_array[0]={'vector':vectors,'bh':'1212'};
            var vectors1 = new OpenLayers.Layer.Vector(
                "要2",
                {
                   styleMap:v_style
                }
            );
            map.addLayer(vectors1);
       v_array[1]={'vector':vectors1,'bh':'1212'};
       vectors.events.on({
          'featureselected' : onFeatureSelect,
          'featureunselected' : onFeatureUnselect
        });
     vectors1.events.on({
          'featureselected' : onFeatureSelect,
          'featureunselected' : onFeatureUnselect
        });
        
      selectControl= new OpenLayers.Control.SelectFeature(
                [vectors,vectors1], {clickout: true, toggle: false,
                    multiple: false, hover: true});
     map.addControl(selectControl);
    selectControl.activate();
    //初始化
    for (i in v_array){
      stemppoint[i] = new OpenLayers.Geometry.Point(113.24733+0.0001*i, 23.10518+0.0001*i);//随机产生
      colors[i] = "#"+rd()+rd()+rd()+rd()+rd()+rd();
    }
    
    loadGPS();
  };

//颜色
var hexword="0123456789abcdef".split("");
var rd=function(){return hexword[Math.floor(Math.random()*16)];}

  //清空屏幕
function removeGPS(){
    window.clearInterval(intervalID);   
    for (i in v_array){
      v_array[i].vector.removeAllFeatures();
      v_array[i].vector.destroy();
    }
   v_array = [];
   sfeat = [];
   colors = [];
   stemppoint = [];

  }
  
var style_1 = {
    strokeColor: "#FF0000",
    fillColor: '#FF0000',
    strokeOpacity: 1,
    strokeWidth: 2,
    pointRadius: 3,
    pointerEvents: "visiblePainted"
  };
  //绘制点   
  function drawGPS(i){
  var features = [];
   var off = Math.random()*0.01
  
  features.push(stemppoint[i]);

  var cpoint = new OpenLayers.Geometry.Point(113.24733+off*(i+1), 23.10518+off*i)//随机产生
    //绘直线
    features.push(cpoint);
        var lineFeature = new OpenLayers.Feature.Vector(
            new OpenLayers.Geometry.LineString(features),null,{
    strokeColor: colors[i],
    strokeOpacity: 1,
    strokeWidth: 2,
    pointRadius: 3,
    pointerEvents: "visiblePainted"
  });
    v_array[i].vector.addFeatures(lineFeature);
     //绘制点
    var pointFeature = new OpenLayers.Feature.Vector(
             new OpenLayers.Geometry.Point(stemppoint[i].x, stemppoint[i].y),{color:colors[i],opacity:1,image:'',radius:3,sd:'true',sj:dd.s?dd.s:''});//image一定的要即使没有就用''
    v_array[i].vector.addFeatures(pointFeature);
    stemppoint[i] = cpoint;
  //绘制最新点
  v_array[i].vector.destroyFeatures(sfeat[i]);
  sfeat[i] =[];
  var r = Math.random()*360;
  sfeat[i].push(
       new OpenLayers.Feature.Vector(
             cpoint, {angle: 0, opacity:1,image:'../img/e.jpg',radius:(map.getZoom() >15) ? 20 : map.getZoom(),sd:'true'}
        ));//绘制要素标识
  sfeat[i].push(
       new OpenLayers.Feature.Vector(
             new OpenLayers.Geometry.Point(cpoint.x, cpoint.y), null,{externalGraphic: "../img/angle.png",
                            pointRadius: (map.getZoom() >15) ? 7 : map.getZoom()-8,
                            graphicYOffset: -29,
                            rotation: r}
        ));//绘制要素方向图标
    v_array[i].vector.addFeatures(sfeat[i]);

  } ;
  //刷新点
  function refreshGPS(){
    loadGPS();
    //contiuneG();
  }
分享到:
评论

相关推荐

    自动轨迹绘制源代码

    这个"自动轨迹绘制源代码"的主题涉及到如何利用编程来自动化地根据数据脚本生成图形,而不是手动编写代码来实现这一过程。这通常涉及到对数据的处理、图形库的运用以及可能的算法应用。 首先,我们要理解需求的核心...

    百度鹰眼web端轨迹绘制

    2. **Web端接口**:开发者可以使用百度鹰眼提供的JavaScript API,在网页上实现轨迹的加载、显示、播放等功能。这些接口包括但不限于`init`(初始化地图)、`addTrack`(添加轨迹)、`playTrack`(播放轨迹)等。 3...

    使用qwtPlot3D实现三维曲线、轨迹绘制的例子

    使用qwtPlot3D实现三维曲线、轨迹绘制的例子,使用qt基于c++开发,可以直接运行,无需额外配置,里面包含了所有需要的库文件和头文件,弄了好久才弄出来的,我没有在网上找到其他的类似的代码,在一些博主和热心人的...

    绘制unity中物体运动的轨迹

    设置Line Renderer的点数与存储的轨迹点数量相同,然后每次物体移动时更新Line Renderer的位置数组,即可实现轨迹的动态显示。 为了绘制任意曲线轨迹,可能需要对物体的运动进行更复杂的控制。例如,可以使用贝塞尔...

    百度地图 轨迹绘制

    总的来说,百度地图的轨迹绘制和路线规划功能为开发者提供了强大的工具,结合MapDemo这样的示例,开发者可以轻松地在自己的应用中实现类似的功能,满足各种业务需求。不断优化的API和服务将使得这些功能更加完善,更...

    ydjc.rar_绘制 轨迹_绘制运动轨迹_轨迹绘制_运动 轨迹_运动轨迹

    标题“ydjc.rar_绘制 轨迹_绘制运动轨迹_轨迹绘制_运动 轨迹_运动轨迹”暗示了这是一个关于创建和分析物体运动路径的软件或代码库。描述中的“本程序可以绘制运动物体的运动轨迹,方便使用!”进一步确认了这个工具...

    Android中屏幕触摸轨迹的绘制、保存与播放

    在“Android中屏幕触摸轨迹的绘制、保存与播放”这一主题中,我们将深入探讨如何实现这一功能。这个项目可能包含一个名为`TouchDrawOnBitmapDemo`的示例应用,该应用允许用户在图片上绘制他们的触摸轨迹,并能够保存...

    GPS星下点轨迹绘制

    MATLAB语言,GPS星下点轨迹绘制,可通过修改轨道六根数的大小以及循环次数可以实现其他卫星导航系统的星下点轨迹绘制

    python 自动轨迹绘制的实例代码

    t.title(自动轨迹绘制) t.setup(800,600) t.pencolor(red) t.pensize(5) t.speed(10) # 数据读取 datals=[] f=open(data.trace,'rt') for line in f: line=line.replace('\n','') datals.append

    绘制轨迹图控件

    本教程主要关注如何使用MFC来开发一个ActiveX控件,并利用GDI(Graphics Device Interface)技术实现轨迹图的绘制。 ActiveX控件是微软的一种组件技术,可以在不同的应用程序之间共享代码,通常用于Web页面或者...

    AIS数据轨迹绘制的Python脚本

    AIS数据轨迹绘制的Python脚本,可以实现AIS轨迹绘制

    自动控制原理 根轨迹绘制基本法则 波特图

    ### 自动控制原理中的根轨迹绘制基本法则及波特图绘制 #### 一、根轨迹绘制基本法则 **1. 根轨迹的起点和终点** 根轨迹的起点与终点是理解根轨迹绘制的基础。根轨迹起始于开环极点,终止于开环零点。对于系统而言...

    七星体轨迹.rar_MATLAB 七星体相空间轨迹绘制_七星_七星体_七星体轨迹_轨迹

    根据高阶微分方程绘制七星体相空间轨迹和MATLAB制作视频

    基于 Java实现车辆的运动轨迹在百度地图上进行绘制

    【作品名称】:基于 Java实现车辆的运动轨迹在百度地图上进行绘制 【适用人群】:适用于希望学习不同技术领域的小白或进阶学习者。可作为毕设项目、课程设计、大作业、工程实训或初期项目立项。 【项目介绍】:...

    通过matlab视觉工具箱实现移动目标跟踪并绘制其运动轨迹,包含仿真操作录像,中文注释

    3.内容:通过matlab视觉工具箱实现移动目标跟踪并绘制其运动轨迹。或者支持vision.VideoFileReader的matlab版本即可。此跟踪算法使用二值图像背景减法的为模型的背景更新方法 ,用连通区检测算法结合形态学上膨胀与...

    利用python实现根轨迹的绘制(已封装)

    点击dist文件内的exe就可以运行

    基于GPS轨迹数据的地图绘制系统

    因此,这项研究提出了一种基于GPS轨迹数据的地图绘制系统,旨在实现高精度的实时地图制作。这一系统的最大优势在于,相较于传统方法,它能够更加高效和经济地实现交通地图的绘制,并且能够与智能交通系统相结合,...

    基于MATLAB的水平井井眼轨迹及响应曲线绘制.pdf

    这三种类型从简单到复杂,体现了水平井设计的多样性和轨迹绘制的复杂度。 在进行井眼轨迹绘制时,文章提出了一些基本假设,比如井眼轨迹由若干段组成,每段形状为直线,通过计算每个测段的坐标增量,累加坐标值来...

Global site tag (gtag.js) - Google Analytics