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 隔行换色 支持键盘上下键,按Enter选定值
Aug 02 Javascript
jQuery-onload让第一次页面加载时图片是淡入方式显示
May 23 Javascript
jQuery之选择组件的深入解析
Jun 19 Javascript
前端必备神器 Snap.svg 弹动效果
Nov 10 Javascript
如何将 jQuery 从你的 Bootstrap 项目中移除(取而代之使用Vue.js)
Jul 17 jQuery
使用mint-ui开发项目的一些心得(分享)
Sep 07 Javascript
jQuery使用zTree插件实现可拖拽的树示例
Sep 23 jQuery
详解express + mock让前后台并行开发
Jun 06 Javascript
Vuejs监听vuex中值的变化的方法示例
Dec 02 Javascript
使用jQuery实现掷骰子游戏
Oct 24 jQuery
vue遍历对象中的数组取值示例
Nov 07 Javascript
ant-design表单处理和常用方法及自定义验证操作
Oct 27 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字符串截取中文截取2,单字节截取模式
2007/12/10 PHP
写出高质量的PHP程序
2012/02/04 PHP
php实现微信公众平台账号自定义菜单类
2014/12/02 PHP
PHP使用Redis长连接的方法详解
2018/02/12 PHP
事件冒泡是什么如何用jquery阻止事件冒泡
2013/03/20 Javascript
网页运行时提示对象不支持abigimage属性或方法
2014/08/10 Javascript
javascript控制图片播放的实现代码
2020/07/29 Javascript
表单验证正则表达式实例代码详解
2015/11/09 Javascript
JavaScript常用字符串与数组扩展函数小结
2016/04/24 Javascript
Javascript中获取浏览器类型和操作系统版本等客户端信息常用代码
2016/06/28 Javascript
详解Angular开发中的登陆与身份验证
2016/07/27 Javascript
关于angular js_$watch监控属性和对象详解
2017/04/24 Javascript
关于js中的鼠标事件总结
2017/07/11 Javascript
vue、react等单页面项目应该这样子部署到服务器
2018/01/03 Javascript
VUE2.0中Jsonp的使用方法
2018/05/22 Javascript
微信小程序 函数防抖 解决重复点击消耗性能问题实现代码
2019/09/12 Javascript
Laravel 如何在blade文件中使用Vue组件的示例代码
2020/06/28 Javascript
python脚本设置超时机制系统时间的方法
2016/02/21 Python
Python字符串格式化输出方法分析
2016/04/13 Python
高质量Python代码编写的5个优化技巧
2017/11/16 Python
selenium python浏览器多窗口处理代码示例
2018/01/15 Python
python3 使用Opencv打开USB摄像头,配置1080P分辨率的操作
2019/12/11 Python
40行Python代码实现天气预报和每日鸡汤推送功能
2020/02/27 Python
CSS3解决移动页面上点击链接触发色块的问题
2016/06/03 HTML / CSS
使用html5 canvas 画时钟代码实例分享
2015/11/11 HTML / CSS
HTML5 Canvas实现360度全景图的示例代码
2018/01/29 HTML / CSS
意大利体育用品和运动服网上商店:Maxi Sport
2019/09/14 全球购物
一道SQL面试题
2012/12/31 面试题
生物科学专业个人求职信范文
2013/12/05 职场文书
感恩之星事迹材料
2014/05/03 职场文书
国际贸易求职信
2014/07/05 职场文书
党的群众路线对照检查材料(个人)
2014/09/24 职场文书
党组织领导班子整改方案
2014/10/25 职场文书
办公室禁烟通知
2015/04/23 职场文书
医院见习总结
2015/06/24 职场文书
清洁工工作总结
2015/08/11 职场文书