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 相关文章推荐
JS 各种网页尺寸判断实例方法
Apr 18 Javascript
table insertRow、deleteRow定义和用法总结
May 14 Javascript
js在指定位置增加节点函数insertBefore()用法实例
Jan 12 Javascript
JQuery中Ajax()的data参数类型实例分析
Dec 15 Javascript
基于javascript实现右下角浮动广告效果
Jan 08 Javascript
js简单判断移动端系统的方法
Feb 25 Javascript
JavaScript重载函数实例剖析
May 13 Javascript
Vue.js实现表格动态增加删除的方法(附源码下载)
Jan 20 Javascript
Vue父子组件双向绑定传值的实现方法
Jul 31 Javascript
每个 JavaScript 工程师都应懂的33个概念
Oct 22 Javascript
layui lay-verify form表单自定义验证规则详解
Sep 18 Javascript
Angular利用HTTP POST下载流文件的步骤记录
Jul 26 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
文件上传的实现
2006/10/09 PHP
PHP 程序员也要学会使用“异常”
2009/06/16 PHP
使用cookie实现统计访问者登陆次数
2013/06/08 PHP
解析PHP自带的进位制之间的转换函数
2013/06/08 PHP
PHP取整函数:ceil,floor,round,intval的区别详细解析
2013/08/31 PHP
PHP常用处理静态操作类
2015/04/03 PHP
php写一个函数,实现扫描并打印出自定目录下(含子目录)所有jpg文件名
2017/05/26 PHP
Laravel如何使用Redis共享Session
2018/02/23 PHP
php压缩文件夹最新版
2018/07/18 PHP
php实现获取近几日、月时间示例
2019/07/06 PHP
PHP 图片处理
2020/09/16 PHP
用于节点操作的API,颠覆原生操作HTML DOM节点的API
2010/12/11 Javascript
深入Javascript函数、递归与闭包(执行环境、变量对象与作用域链)使用详解
2013/05/08 Javascript
jQuery的text()方法用法分析
2014/12/20 Javascript
利用python分析access日志的方法
2016/10/26 Javascript
如何提高javascript加载速度
2016/12/26 Javascript
javascript遍历json对象的key和任意js对象属性实例
2017/03/09 Javascript
Iphone手机、安卓手机浏览器控制默认缩放大小的方法总结(附代码)
2017/08/18 Javascript
vue实现个人信息查看和密码修改功能
2018/05/06 Javascript
Vue父子组件传值的一些坑
2020/09/16 Javascript
JS使用setInterval计时器实现挑战10秒
2020/11/08 Javascript
零基础写python爬虫之urllib2使用指南
2014/11/05 Python
Python遍历zip文件输出名称时出现乱码问题的解决方法
2015/04/08 Python
Python实现基于KNN算法的笔迹识别功能详解
2018/07/09 Python
window7下的python2.7版本和python3.5版本的opencv-python安装过程
2019/10/24 Python
详解Django admin高级用法
2019/11/06 Python
Python常用编译器原理及特点解析
2020/03/23 Python
python 模块导入问题汇总
2021/02/01 Python
eVitamins日本:在线购买折扣维生素、补品和草药
2019/04/04 全球购物
如何判断一段程序是由C 编译程序还是由C++编译程序编译的
2013/08/04 面试题
中间件分为哪几类
2016/09/18 面试题
教师自荐信范文
2013/12/09 职场文书
家长对老师的感言
2014/03/11 职场文书
经典毕业生求职信
2014/07/12 职场文书
北京故宫导游词
2015/01/31 职场文书
致青春观后感
2015/06/09 职场文书