当前位置: 移动技术网 > IT编程>开发语言>Java > openLayer4实现动态改变标注图标

openLayer4实现动态改变标注图标

2020年08月18日  | 移动技术网IT编程  | 我要评论
本文实例为大家分享了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);

  });
}

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

如您对本文有疑问或者有任何想说的,请 点击进行留言回复,万千网友为您解惑!

相关文章:

验证码:
移动技术网