欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

openLayer4实现动态改变标注图标

程序员文章站 2022-04-21 11:00:27
本文实例为大家分享了openlayer4动态改变标注图标的具体代码,供大家参考,具体内容如下地图上经常需要标出标注,标注点击之后要有相应的变化来达到一定的效果。此实例即在地图上添加图片标注,点击标注,...

本文实例为大家分享了openlayer4动态改变标注图标的具体代码,供大家参考,具体内容如下

地图上经常需要标出标注,标注点击之后要有相应的变化来达到一定的效果。此实例即在地图上添加图片标注,点击标注,更换标注图片,再点击其他标注,上一个标注恢复原来的标注图片。

/*初始化地图*/
  var map;
  function initmap(){   
   map= new ol.map({
   layers: layers,
   target: 'mapcontainer',
   view: new ol.view({
    //地图中心坐标
    center: new ol.proj.fromlonlat([117.191166, 34.289749],'epsg:3857'),
    zoom: 13//地图缩放级别
   })
   });
   //添加标注
   addfeature();      
  }



  /*添加标注信息*/
  function addfeature(){ 
  //数据太多,放json里读取,里面是标注的坐标信息  
  $.get('./featuredata.json').done(function(data){ 
   var data = eval(data);
   var lon = 0;
   var lat = 0;
   var romearr = [];
   for(var i=0;i<data .length;i++){
    lon = parsefloat(data [i].lon);
    lat = parsefloat(data [i].lat);
    name = data[i].name;    
    var rome = new ol.feature({
     geometry:new ol.geom.point(new ol.proj.fromlonlat([lon,lat],'epsg:3857')),
     name:name
    });
    //标注样式设置
    rome.setstyle(new ol.style.style({
     image: new ol.style.icon(({
     crossorigin: 'anonymous',
     scale:0.3, //标注图标大小     
     src: 'images/vtourskin_mapspot.png'
     }))
    }));
    romearr.push(rome);  
   }
   //定义select控制器,点击标注后的事件
   var select= new ol.interaction.select();
    //map加载该控件,默认是激活可用的
    map.addinteraction(select);
    select.on('select', function(e) {
    /*恢复其他图标样式*/
    romearr.foreach(function(ele){
     ele.setstyle(new ol.style.style({
     image: new ol.style.icon(({
      crossorigin: 'anonymous',
      scale:0.3,     
      src: 'images/vtourskin_mapspot.png'
     }))
     }));
    })
    console.log(e.selected); //打印已选择的feature            
    /*当前选择的图标变化,在此仅改变了图片路径以显示不同的图标,可以根据自己的需要进行设置*/
    var currentrome = e.selected[0];
    currentrome.setstyle(new ol.style.style({
     image: new ol.style.icon(({
      crossorigin: 'anonymous',
      scale:0.3,     
      src: 'images/vtourskin_mapspotactive.png'
     }))
     }));
    });

   vectorsource = new ol.source.vector({
    features: romearr
   });

   var vectorlayer = new ol.layer.vector({
    source: vectorsource
   });

   map.addlayer(vectorlayer);

  });
}

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。