OpenLayers简单使用

鼠标移动变色和显示标注查看官方样式
#样式

var style = new ol.style.Style({// 起始样式
			fill : new ol.style.Fill({// 填充要素样式
				color : '#B4FCD1'
			}),
			stroke : new ol.style.Stroke({// 边界样色
				color : '#F5F5F5',
				width : 2
			}),
			text : new ol.style.Text({// 字体样色
				font : '14px Calibri, 黑体',
				fill : new ol.style.Fill({
					color : 'black'
				})
			})
		});
		
		var vectorLayer = new ol.layer.Vector({//地图-填充颜色字体等样式
			source : new ol.source.Vector({
				features : (new ol.format.GeoJSON()).readFeatures(res, {// 用readFeatures方法可以自定义坐标系
					dataProjection : 'EPSG:4326', // 设定JSON数据使用的坐标系
					featureProjection : 'EPSG:3857' // 设定当前地图使用的feature的坐标系
				})
			}),
			// 样式设置
			style : function(feature) {
				style.getText().setText(feature.get('cn'));// 显示名称
				style.getFill().setColor(colour);// 显示颜色
			} 
			return style;
			}
		});

#图标

//图标设置
		var iconArr = [];
		    for(var i = 0; i < map.features.length; i++){
		    	var arr = map.features[i].properties.wafotown;
		    	if (arr != null && arr.length > 0) {
		    		var lon = parseFloat(map.features[i].properties.center_x);//经度
			    	var lat = parseFloat(map.features[i].properties.center_y);//纬度
			        var rome = new ol.Feature({
			        	name:cn,
			            geometry:new ol.geom.Point(new ol.proj.fromLonLat([lon,lat],'EPSG:3857'))
			        });
			        //标注样式设置
			   		rome.setStyle(new ol.style.Style({
			   			text: new ol.style.Text({
		                    textAlign: 'center',            //位置-对齐方式
		                    textBaseline: 'middle',         //基准线
		                    font: '16px Calibri, 黑体',    	//文字样式
		                    text: cn,      					//文本内容
		                    fill: new ol.style.Fill({       //文本填充样式(即文字颜色)
		                        color: 'black'
		                    }),
		                    stroke: new ol.style.Stroke({
		                        color: 'white', 
		                        width: 1.5
		                    })
		                }),
			            image: new ol.style.Icon({
			            	anchor: [0.5, -10],             //锚点-控制标注图片和文字之间的距离([0]:x轴0.5中心;[1]y轴:0顶部)
				            anchorOrigin:'top-right',       //锚点源-标注样式的起点位置
				            anchorXUnits: 'fraction',       //锚点X值单位(单位:分数)
				            anchorYUnits: 'pixels',         //锚点Y值单位(单位:像素)
				            offsetOrigin: 'top-right',      //偏移原点-偏移起点位置的方向
				            //opacity: 0.1,					//图标透明度
				            crossOrigin: 'anonymous',
				            scale: 0.3, 					//标注图标大小         
				            src: "image/warn/"+code+".png"
			            })
			        }));
			   		iconArr.push(rome);   
				}
		    }
		}
	    var IconLayer = new ol.layer.Vector({
	        source: new ol.source.Vector({
	        	features: iconArr
	        }),
	    });

#地图加载

var map = new ol.Map({
			layers : [ vectorLayer, IconLayer ],
			target : 'wafotown_map',
			view : new ol.View({
				center : center, 	// 中心坐标x轴y轴
				extent : extent, 	// 地图范围left, bottom, right, top
				maxZoom : zoom[0], 	// 最大缩放级别
				minZoom : zoom[1], 	// 最小缩放级别
				zoom : zoom[2]		// 当前缩放级别
			})
		});

#禁止移动地图

// 禁止鼠标拖动  
		let pan = getPan();
		pan.setActive(false);//false:当前地图不可拖动。true:可拖动
		function getPan() {
			let pan;
			map.getInteractions().forEach(function(element, index, array) {
				if(element instanceof ol.interaction.DragPan) {
					pan = element;
				}
			})
			return pan;
		}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值