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 相关文章推荐
NiftyCube——轻松实现圆角边框
Feb 20 Javascript
JXTree对象,读取外部xml文件数据,生成树的函数
Apr 02 Javascript
jQuery 获取对象 根据属性、内容匹配, 还有表单元素匹配
May 31 Javascript
ASP.NET jQuery 实例11 通过使用jQuery validation插件简单实现用户登录页面验证功能
Feb 03 Javascript
node.js中的console.dir方法使用说明
Dec 10 Javascript
Google 地图事件实例讲解
Aug 06 Javascript
JS版微信6.0分享接口用法分析
Oct 13 Javascript
vue使用vue-cli快速创建工程
Jul 28 Javascript
JS获取子、父、兄节点方法小结
Aug 14 Javascript
vue文件树组件使用详解
Mar 29 Javascript
iView-admin 动态路由问题的解决方法
Oct 03 Javascript
vue 基于element-ui 分页组件封装的实例代码
Dec 10 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把JPEG图片转换成Progressive JPEG的方法
2014/06/30 PHP
PHP+jQuery实现即点即改功能示例
2019/02/21 PHP
Laravel5.1 框架Middleware中间件基本用法实例分析
2020/01/04 PHP
HR vs ForZe BO3 第二场 2.13
2021/03/10 DOTA
参考:关于Javascript中实现暂停的几篇文章
2007/03/04 Javascript
Javascript 陷阱 window全局对象
2008/11/26 Javascript
IE6下js通过css隐藏select的一个bug
2010/08/16 Javascript
Javascript无阻塞加载具体方式
2013/06/28 Javascript
JSON+HTML实现国家省市联动选择效果
2014/05/18 Javascript
Js实现滚动变色的文字效果
2014/06/16 Javascript
JS实现点击按钮获取页面高度的方法
2015/11/02 Javascript
jQuery短信验证倒计时功能实现方法详解
2016/05/25 Javascript
jQuery实现简易的输入框字数计数功能示例
2017/01/16 Javascript
JavaScript错误处理和堆栈追踪详解
2017/04/18 Javascript
详解vue后台系统登录态管理
2019/04/02 Javascript
vue模式history下在iis中配置流程
2019/04/17 Javascript
Node.js Windows Binary二进制文件安装方法
2019/05/16 Javascript
基于 vue-skeleton-webpack-plugin 的骨架屏实战
2019/08/05 Javascript
vue解决花括号数据绑定不成功的问题
2019/10/30 Javascript
vue实现点击按钮“查看详情”弹窗展示详情列表操作
2020/09/09 Javascript
[01:10:02]IG vs Winstrike 2018国际邀请赛小组赛BO2 第一场 8.19
2018/08/21 DOTA
pymongo给mongodb创建索引的简单实现方法
2015/05/06 Python
python实现在cmd窗口显示彩色文字
2019/06/24 Python
Numpy 中的矩阵求逆实例
2019/08/26 Python
Django+uni-app实现数据通信中的请求跨域的示例代码
2019/10/12 Python
pytorch 常用线性函数详解
2020/01/15 Python
python exit出错原因整理
2020/08/31 Python
Python爬虫入门教程01之爬取豆瓣Top电影
2021/01/24 Python
HTML5中input输入框默认提示文字向左向右移动的示例代码
2020/09/10 HTML / CSS
在职研究生自我鉴定
2013/10/16 职场文书
中学门卫岗位职责
2013/12/26 职场文书
合作投资意向书
2014/04/01 职场文书
2014年端午节演讲稿范文
2014/05/23 职场文书
2015年复活节活动总结
2015/02/27 职场文书
2015年全国保险公众宣传日活动方案
2015/05/06 职场文书
mysql中整数数据类型tinyint详解
2021/12/06 MySQL