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 相关文章推荐
Javascript中的var_dump函数实现代码
Sep 07 Javascript
jquery 输入框数字限制插件
Nov 10 Javascript
js自动闭合html标签(自动补全html标记)
Oct 04 Javascript
js正文内容高亮效果的实现方法
Jun 30 Javascript
jQuery 2.0.3 源码分析之core(一)整体架构
May 27 Javascript
jQuery EasyUI实现右键菜单变灰不可用效果
Sep 24 Javascript
深入学习AngularJS中数据的双向绑定机制
Mar 04 Javascript
jQuery事件的绑定、触发、及监听方法简单说明
May 10 Javascript
vue下拉列表功能实例代码
Apr 08 Javascript
Vue 实现拖动滑块验证功能(只有css+js没有后台验证步骤)
Aug 24 Javascript
JS中的算法与数据结构之二叉查找树(Binary Sort Tree)实例详解
Aug 16 Javascript
Vue 实现拨打电话操作
Nov 16 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基于timestamp和nonce实现的防止重放攻击方案分析
2019/07/26 PHP
JSQL  一个 web DB 的封装
2010/05/05 Javascript
jQuery中on()方法用法实例详解
2015/02/06 Javascript
Javascript对象Clone实例分析
2015/06/09 Javascript
JavaScript中Null与Undefined的区别解析
2015/06/30 Javascript
学习JavaScript设计模式之单例模式
2016/01/19 Javascript
jQuery qrcode生成二维码的方法
2016/04/03 Javascript
JS HTML5实现拖拽移动列表效果
2020/08/27 Javascript
JavaScript简单拖拽效果(1)
2017/05/17 Javascript
vue过渡和animate.css结合使用详解
2017/06/14 Javascript
vue中设置、获取、删除cookie的方法
2018/09/21 Javascript
vue element table 表格请求后台排序的方法
2018/09/28 Javascript
vue 使用vue-i18n做全局中英文切换的方法
2018/10/29 Javascript
Echarts动态加载多条折线图的实现代码
2019/05/24 Javascript
jQuery zTree树插件的使用教程
2019/08/16 jQuery
Python 使用SMTP发送邮件的代码小结
2016/09/21 Python
Python中的id()函数指的什么
2017/10/17 Python
Python使用Matplotlib模块时坐标轴标题中文及各种特殊符号显示方法
2018/05/04 Python
python如何给字典的键对应的值为字典项的字典赋值
2019/07/05 Python
Python上下文管理器用法及实例解析
2019/11/11 Python
浅谈pytorch、cuda、python的版本对齐问题
2020/01/15 Python
屏蔽Django admin界面添加按钮的操作
2020/03/11 Python
python 比较字典value的最大值的几种方法
2020/04/17 Python
解决django框架model中外键不落实到数据库问题
2020/05/20 Python
python 图像判断,清晰度(明暗),彩色与黑白实例
2020/06/04 Python
详解Django中异步任务之django-celery
2020/11/05 Python
四年级下册教学反思
2014/02/01 职场文书
元旦晚会感言
2014/03/12 职场文书
2015年预算员工作总结
2015/05/14 职场文书
辛德勒的名单观后感
2015/06/03 职场文书
2015年幼师个人工作总结
2015/10/15 职场文书
学校体育节班级口号
2015/12/25 职场文书
CSS3实现的3D隧道效果
2021/04/27 HTML / CSS
分析ZooKeeper分布式锁的实现
2021/06/30 Java/Android
mysql配置SSL证书登录的实现
2021/09/04 MySQL
Python+pyaudio实现音频控制示例详解
2022/07/23 Python