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 性能优化指南(2)
May 21 Javascript
javascript appendChild,innerHTML,join性能比较代码
Aug 29 Javascript
在IE下获取object(ActiveX)的Param的代码
Sep 15 Javascript
javascript入门基础之私有变量
Feb 23 Javascript
JavaScript的strict模式与with关键字介绍
Feb 08 Javascript
jQuery中appendTo()方法用法实例
Jan 08 Javascript
JavaScript随机打乱数组顺序之随机洗牌算法
Aug 02 Javascript
Js获取当前日期时间及格式化代码
Sep 17 Javascript
JavaScript reduce和reduceRight详解
Oct 24 Javascript
bootstarp modal框居中显示的实现代码
Feb 18 Javascript
jQuery+ajax实现动态添加表格tr td功能示例
Apr 23 jQuery
vue中beforeRouteLeave实现页面回退不刷新的示例代码
Nov 01 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
珊瑚虫IP库浅析
2007/02/15 PHP
PHP获取MAC地址的具体实例
2013/12/13 PHP
php计算程序运行时间的简单例子分享
2014/05/10 PHP
PHP加密解密实例分析
2015/12/25 PHP
PHP实现留言板功能的详细代码
2017/03/25 PHP
PHP面向对象五大原则之单一职责原则(SRP)详解
2018/04/04 PHP
动态载入/删除/更新外部 JavaScript/Css 文件的代码
2010/07/03 Javascript
自己整理的一个javascript日期处理函数
2010/10/16 Javascript
Javascript实现重力弹跳拖拽运动效果示例
2013/06/28 Javascript
js数组的操作指南
2014/12/28 Javascript
基于jQuery+JSON的省市二三级联动效果
2015/06/05 Javascript
jQuery插件简单实现方法
2015/07/18 Javascript
Bootstrap实现input控件失去焦点时验证
2016/08/04 Javascript
Javascript中的async awai的用法
2017/05/17 Javascript
AngularJS中下拉框的基本用法示例
2017/10/11 Javascript
修改Nodejs内置的npm默认配置路径方法
2018/05/13 NodeJs
了解ESlint和其相关操作小结
2018/05/21 Javascript
MVVM框架下实现分页功能示例
2018/06/14 Javascript
JavaScript生成随机验证码代码实例
2019/09/28 Javascript
vue中activated的用法
2021/01/03 Vue.js
12步入门Python中的decorator装饰器使用方法
2016/06/20 Python
利用Python读取文件的四种不同方法比对
2017/05/18 Python
python 将json数据提取转化为txt的方法
2018/10/26 Python
Python实战购物车项目的实现参考
2019/02/20 Python
python NumPy ndarray二维数组 按照行列求平均实例
2019/11/26 Python
对Pytorch中Tensor的各种池化操作解析
2020/01/03 Python
解决Tensorflow 内存泄露问题
2020/02/05 Python
Centos7下源码安装Python3 及shell 脚本自动安装Python3的教程
2020/03/07 Python
python实现飞船大战
2020/04/24 Python
Python基于gevent实现文件字符串查找器
2020/08/11 Python
iphoneX 适配客户端H5页面的方法教程
2017/12/08 HTML / CSS
Linux管理员面试题 Linux admin interview questions
2014/11/01 面试题
高三自我鉴定范文
2013/10/19 职场文书
婚前财产公证书
2014/04/10 职场文书
2014年基建工作总结
2014/12/12 职场文书
springboot中rabbitmq实现消息可靠性机制详解
2021/09/25 Java/Android