openLayer4实现动态改变标注图标


Posted in Javascript onAugust 17, 2020

本文实例为大家分享了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);

  });
}

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

Javascript 相关文章推荐
jquery实现固定顶部导航效果(仿蘑菇街)
Mar 21 Javascript
jquery $.each 和for怎么跳出循环终止本次循环
Sep 27 Javascript
动态加载JavaScript文件的两种方法
Apr 22 Javascript
jQuery Dialog对话框事件用法实例分析
May 10 Javascript
原生js实现ajax方法(超简单)
Sep 20 Javascript
基于vue2.0+vuex的日期选择组件功能实现
Mar 13 Javascript
React中使用collections时key的重要性详解
Aug 07 Javascript
在Vue组件化中利用axios处理ajax请求的使用方法
Aug 25 Javascript
vue 的点击事件获取当前点击的元素方法
Sep 15 Javascript
在Bootstrap开发框架中使用dataTable直接录入表格行数据的方法
Oct 25 Javascript
微信小程序第三方框架对比 之 wepy / mpvue / taro
Apr 10 Javascript
JavaScript组合设计模式--改进引入案例分析
May 23 Javascript
openlayers4实现点动态扩散
Aug 17 #Javascript
Vue实现计算器计算效果
Aug 17 #Javascript
vue-model实现简易计算器
Aug 17 #Javascript
Vue实现手机计算器
Aug 17 #Javascript
Vuex实现购物车小功能
Aug 17 #Javascript
jquery+ajax实现异步上传文件显示进度条
Aug 17 #jQuery
jQuery实现异步上传一个或多个文件
Aug 17 #jQuery
You might like
PHP获取youku视频真实flv文件地址的方法
2014/12/23 PHP
PHP连接MySQL数据库并以json格式输出
2018/05/21 PHP
ThinkPHP中获取指定日期后工作日的具体日期方法
2018/10/14 PHP
javascript对象的property和prototype是这样一种关系
2007/03/24 Javascript
JS在IE和FireFox之间常用函数的区别小结
2010/03/12 Javascript
jquery checkbox,radio是否选中的判断代码
2010/03/20 Javascript
jquery入门—选择器实现隔行变色实例代码
2013/01/04 Javascript
javascript之typeof、instanceof操作符使用探讨
2013/05/19 Javascript
Jquery 的outerHeight方法使用介绍
2013/09/11 Javascript
JS去除iframe滚动条的方法
2015/04/01 Javascript
JavaScript实现带标题的图片轮播特效
2015/05/20 Javascript
js实现简单的联动菜单效果
2015/08/19 Javascript
JS+CSS实现DIV层的展开、收缩效果
2016/01/28 Javascript
jQuery无刷新上传之uploadify3.1简单使用
2016/06/18 Javascript
JavaScript实现图片拖曳效果
2017/09/08 Javascript
JS扩展String.prototype.format字符串拼接的功能
2018/03/09 Javascript
vue.js 中使用(...)运算符报错的解决方法
2018/08/09 Javascript
angularJS1 url中携带参数的获取方法
2018/10/09 Javascript
js使用swiper实现层叠轮播效果实例代码
2018/12/12 Javascript
JS实现的杨辉三角【帕斯卡三角形】算法示例
2019/02/26 Javascript
javascript实现手动点赞效果
2019/04/09 Javascript
关于vue组件事件属性穿透详解
2019/10/28 Javascript
[00:50]2014DOTA2国际邀请赛 NEWBEE战队回顾
2014/08/01 DOTA
Python3 处理JSON的实例详解
2017/10/29 Python
使用python编写udp协议的ping程序方法
2018/04/22 Python
Python3实现的判断环形链表算法示例
2019/03/07 Python
pandas 层次化索引的实现方法
2019/07/06 Python
简单了解python反射机制的一些知识
2019/07/13 Python
tensorflow 利用expand_dims和squeeze扩展和压缩tensor维度方式
2020/02/07 Python
瑞贝卡·明可弗包包官网:Rebecca Minkoff
2016/07/21 全球购物
美国眼镜网站:LensCrafters
2020/01/19 全球购物
个人思想理论学习的自我鉴定
2013/11/30 职场文书
岗位廉政承诺书
2014/03/27 职场文书
金砖之国观后感
2015/06/11 职场文书
Pytorch反向传播中的细节-计算梯度时的默认累加操作
2021/06/05 Python
Python+SeaTable实现计算两个日期间的工作日天数
2022/07/07 Python