如何让openLayer4动态调整标注图标实现个性化定制?

2026-04-01 17:091阅读0评论SEO资讯
  • 内容介绍
  • 文章标签
  • 相关推荐

本文共计764个文字,预计阅读时间需要4分钟。

如何让openLayer4动态调整标注图标实现个性化定制?

本文分享了使用OpenLayer进行动态变化标注图标的整体代码,供大家参考。具体内容如下:

在地图上标注常用图标,点击标注点后,实现相应的变化效果。

javascript// 引入OpenLayer库import 'ol/ol.css';import Map from 'ol/Map';import View from 'ol/View';import TileLayer from 'ol/layer/Tile';import OSM from 'ol/source/OSM';import VectorLayer from 'ol/layer/Vector';import VectorSource from 'ol/source/Vector';import { fromLonLat } from 'ol/proj';import Feature from 'ol/Feature';import Point from 'ol/geom/Point';import Style from 'ol/style/Style';import Icon from 'ol/style/Icon';

// 创建地图const map=new Map({ target: 'map', layers: [ new TileLayer({ source: new OSM() }), new VectorLayer({ source: new VectorSource() }) ], view: new View({ center: fromLonLat([116.397428, 39.90923]), zoom: 10 })});

// 创建标注图标const iconStyle=new Style({ image: new Icon({ src: 'path/to/icon.png', anchor: [0.5, 46], anchorXUnits: 'fraction', anchorYUnits: 'pixels', scale: 0.5 })});

// 创建标注点const feature=new Feature({ geometry: new Point(fromLonLat([116.397428, 39.90923])), style: iconStyle});

// 添加标注点到图层map.getLayers().getArray()[1].getSource().addFeature(feature);

// 点击标注点后的变化效果map.on('singleclick', function(event) { const coordinate=event.coordinate; const feature=map.forEachFeatureAtPixel(event.pixel, function(feature) { return feature; }); if (feature) { // 实现点击后的变化效果 // ... }});

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

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

如何让openLayer4动态调整标注图标实现个性化定制?

本文共计764个文字,预计阅读时间需要4分钟。

如何让openLayer4动态调整标注图标实现个性化定制?

本文分享了使用OpenLayer进行动态变化标注图标的整体代码,供大家参考。具体内容如下:

在地图上标注常用图标,点击标注点后,实现相应的变化效果。

javascript// 引入OpenLayer库import 'ol/ol.css';import Map from 'ol/Map';import View from 'ol/View';import TileLayer from 'ol/layer/Tile';import OSM from 'ol/source/OSM';import VectorLayer from 'ol/layer/Vector';import VectorSource from 'ol/source/Vector';import { fromLonLat } from 'ol/proj';import Feature from 'ol/Feature';import Point from 'ol/geom/Point';import Style from 'ol/style/Style';import Icon from 'ol/style/Icon';

// 创建地图const map=new Map({ target: 'map', layers: [ new TileLayer({ source: new OSM() }), new VectorLayer({ source: new VectorSource() }) ], view: new View({ center: fromLonLat([116.397428, 39.90923]), zoom: 10 })});

// 创建标注图标const iconStyle=new Style({ image: new Icon({ src: 'path/to/icon.png', anchor: [0.5, 46], anchorXUnits: 'fraction', anchorYUnits: 'pixels', scale: 0.5 })});

// 创建标注点const feature=new Feature({ geometry: new Point(fromLonLat([116.397428, 39.90923])), style: iconStyle});

// 添加标注点到图层map.getLayers().getArray()[1].getSource().addFeature(feature);

// 点击标注点后的变化效果map.on('singleclick', function(event) { const coordinate=event.coordinate; const feature=map.forEachFeatureAtPixel(event.pixel, function(feature) { return feature; }); if (feature) { // 实现点击后的变化效果 // ... }});

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

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

如何让openLayer4动态调整标注图标实现个性化定制?