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具有类似Lambda表达式编程能力的代码(改进版)
Sep 14 Javascript
基于jQuery的判断iPad、iPhone、Android是横屏还是竖屏的代码
May 11 Javascript
Jquery给基本控件的取值、赋值示例
May 23 Javascript
理解Angular数据双向绑定
Jan 10 Javascript
深入理解JQuery中的事件与动画
May 18 Javascript
AngularJS 实现弹性盒子布局的方法
Aug 30 Javascript
让DIV的滚动条自动滚动到最底部的3种方法(推荐)
Sep 24 Javascript
javascript 中null和undefined区分和比较
Apr 19 Javascript
vue中添加mp3音频文件的方法
Mar 02 Javascript
原生js实现拖拽功能基本思路详解
Apr 18 Javascript
vue实现文件上传读取及下载功能
Nov 17 Javascript
javascript对象3个属性特征
Nov 17 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
Laravel 5框架学习之Blade 简介
2015/04/08 PHP
PHP实现QQ空间自动回复说说的方法
2015/12/02 PHP
php实现头像上传预览功能
2017/04/27 PHP
JS拖动技术 关于setCapture使用
2010/12/09 Javascript
js原生appendChild的bug解决心得分享
2013/07/01 Javascript
jquery幻灯片插件bxslider样式改进实例
2014/10/15 Javascript
fckeditor粘贴Word时弹出窗口取消的方法
2014/10/30 Javascript
深入理解JavaScript编程中的原型概念
2015/06/25 Javascript
纯js模仿windows系统日历
2017/02/04 Javascript
js 用于检测类数组对象的函数方法
2017/05/02 Javascript
bootstrap的常用组件和栅格式布局详解
2017/05/02 Javascript
webpack构建的详细流程探底
2018/01/08 Javascript
ng-alain表单使用方式详解
2018/07/10 Javascript
javascript实现超好看的3D烟花特效
2020/01/01 Javascript
基于JavaScript实现轮播图效果
2021/01/02 Javascript
[06:44]2018DOTA2亚洲邀请赛4.5 SOLO赛 MidOne vs Sumail
2018/04/06 DOTA
[46:50]Liquid vs Mineski 2018国际邀请赛小组赛BO2 第二场 8.18
2018/08/19 DOTA
研究Python的ORM框架中的SQLAlchemy库的映射关系
2015/04/25 Python
python脚本设置系统时间的两种方法
2016/02/21 Python
Python对列表中的各项进行关联详解
2017/08/15 Python
python线程池(threadpool)模块使用笔记详解
2017/11/17 Python
python 使用shutil复制图片的例子
2019/12/13 Python
python 列表、字典和集合的添加和删除操作
2019/12/16 Python
django admin 添加自定义链接方式
2020/03/11 Python
Python正则表达式如何匹配中文
2020/05/27 Python
Pandas把dataframe或series转换成list的方法
2020/06/14 Python
手把手教你从PyCharm安装到激活(最新激活码),亲测有效可激活至2089年
2020/11/25 Python
泰国演唱会订票网站:StubHub泰国
2018/02/26 全球购物
潘多拉意大利官方网上商城:网上选购PANDORA珠宝
2018/10/07 全球购物
行政专员岗位职责说明书
2014/07/30 职场文书
表扬信范文
2015/05/04 职场文书
试用期转正工作总结2015
2015/05/28 职场文书
入党团支部推荐意见
2015/06/02 职场文书
Python读取文件夹下的所有文件实例代码
2021/04/02 Python
SQL注入篇学习之盲注/宽字节注入
2022/03/03 MySQL
浅谈redis的过期时间设置和过期删除机制
2022/03/18 MySQL