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 全选/反选以及单击行改变背景色实例
Jul 02 Javascript
Jquery模仿Baidu、Google搜索时自动补充搜索结果提示
Dec 26 Javascript
常用的JavaScript模板引擎介绍
Feb 28 Javascript
JS实现控制表格内指定单元格内容对齐的方法
Mar 30 Javascript
基于jQuery Circlr插件实现产品图片360度旋转
Sep 20 Javascript
基于Vuejs实现购物车功能
Aug 02 Javascript
老生常谈Javascript中的原型和this指针
Oct 09 Javascript
解决vue2.x中数据渲染以及vuex缓存的问题
Jul 13 Javascript
详解JS构造函数中this和return
Sep 16 Javascript
微信小程使用swiper组件实现图片轮播切换显示功能【附源码下载】
Dec 12 Javascript
webpack4 SCSS提取和懒加载的示例
Sep 03 Javascript
解决vue-cli 打包后自定义动画未执行的问题
Nov 12 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
解析zend studio中直接导入svn中的项目的方法步骤
2013/06/21 PHP
php实现mysql数据库操作类分享
2014/02/14 PHP
Codeigniter中集成smarty和adodb的方法
2016/03/04 PHP
深入解析Laravel5.5中的包自动发现Package Auto Discovery
2017/09/13 PHP
phpinfo的知识点总结
2019/10/10 PHP
Javascript isArray 数组类型检测函数
2009/10/08 Javascript
jQuery之网页换肤实现代码
2011/04/30 Javascript
js replace正则表达式应用案例讲解
2013/01/17 Javascript
jquery得到font-size属性值实现代码
2013/09/30 Javascript
jquery实现标签上移、下移、置顶
2015/04/26 Javascript
jquery简单实现带渐显效果的选项卡菜单代码
2015/09/01 Javascript
javascript基础知识分享之类与函数化
2016/02/13 Javascript
详解Javascript中的原型OOP
2016/10/12 Javascript
JS针对Array的各种操作汇总
2016/11/29 Javascript
详解angularjs利用ui-route异步加载组件
2017/05/21 Javascript
react 创建单例组件的方法
2018/04/26 Javascript
layui-table获得当前行的上/下一行数据的例子
2019/09/24 Javascript
Python多进程并发(multiprocessing)用法实例详解
2015/06/02 Python
Python读取txt文件数据的方法(用于接口自动化参数化数据)
2018/06/27 Python
一个可以套路别人的python小程序实例代码
2019/04/09 Python
使用python画社交网络图实例代码
2019/07/10 Python
python随机生成库faker库api实例详解
2019/11/28 Python
[原创]赚疯了!转手立赚800+?大佬的python「抢茅台脚本」使用教程
2021/01/12 Python
css3如何绘制一个圆圆的loading转圈动画
2018/01/09 HTML / CSS
Oral-B荷兰:牙医最推荐的品牌
2020/02/25 全球购物
bonprix荷兰网上商店:便宜的服装、鞋子和家居用品
2020/07/04 全球购物
哪些情况下不应该使用索引
2015/07/20 面试题
如何删除一个表里面的重复行
2013/07/13 面试题
办公室文秘自我评价
2013/09/21 职场文书
护士实习求职信
2014/06/22 职场文书
2014年手术室工作总结
2014/11/26 职场文书
初中英语教师个人工作总结
2015/02/09 职场文书
失恋33天观后感
2015/06/11 职场文书
团队执行力培训心得体会
2015/08/15 职场文书
建议书的格式及范文
2015/09/14 职场文书
vue使用节流函数的踩坑实例指南
2021/05/20 Vue.js