openLayer4实现动态改变标注图标

时间:2021-05-26

本文实例为大家分享了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); });}

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。

声明:本页内容来源网络,仅供用户参考;我单位不保证亦不表示资料全面及准确无误,也不保证亦不表示这些资料为最新信息,如因任何原因,本网内容或者用户因倚赖本网内容造成任何损失或损害,我单位将不会负任何法律责任。如涉及版权问题,请提交至online#300.cn邮箱联系删除。

相关文章