创建地图:

//创建地图
var map = new ol.Map({
//设置显示地图的视图
view: new ol.View({
center: [0, 0],//义地图显示中心于经度0度,纬度0度处
zoom: 1 //定义地图显示层级为1
}),
//创建地图图层
layers: [
//创建一个使用Open Street Map地图源的瓦片图层
new ol.layer.Tile({
source: new ol.source.OSM()
})
],
//让id为map的div作为地图的容器
target: 'map'
});

创建矢量图层:

//矢量图层vectorlayer
let vectorlayer = new ol.layer.Vector({
source:source,//矢量图层源
style:style,//矢量图层样式
opacity:1,//透明度,默认为1
visible:true,//是不显示,默认true
extent:[100,34,103,36],//可选参数,图层渲染范围,[minLon,minLat,maxLon,maxLat]
zIndex:1,//图层渲染索引,默认是按加载顺序叠加
})
map.addLayer(vectorlayer)

矢量图层关于map的方法:

//添加矢量图层
map.addLayer(vectorlayer)
//删除切片图层
map.removeLayer(vectorlayer)

矢量图层自身方法:

//矢量图层的常用方法
//获取-设置,图层的可见范围
vectorlayer.getExtent();
vectorlayer.setExtent([100,34,103,36]);
//获取-设置,图层最大缩放级别
vectorlayer.getMaxZoom()
vectorlayer.setMaxZoom(18)
//获取-设置,图层最小缩放级别
vectorlayer.getMinZoom()
vectorlayer.setMinZoom(2)
//获取-设置,图层的不透明度
vectorlayer.getOpacity()
vectorlayer.setOpacity(1)
//获取-设置,图层源
vectorlayer.getSource()
vectorlayer.setSource(new ol.source.OSM())
//获取-设置,图层的可见性
vectorlayer.getVisible()
vectorlayer.setVisible(true)
//获取-设置,图层的Z索引
vectorlayer.getZIndex()
vectorlayer.setZIndex(2)
//绑定事件-取消事件 type事件类型,listener函数体
vectorlayer.on(type,listener)
vectorlayer.un(type,listener) //获取与视口上给定像素相交的最高要素
vectorlayer.getFeatures([200,600])
//获取-设置,图层样式
vectorlayer.getStyle()
vectorlayer.setStyle(style)

下面重点介绍:矢量图层样式(style) 和 矢量图层源(source)

矢量样式:style

let style = new ol.style.Style({
//填充样式(面)
fill: new ol.style.Fill({
color: 'rgba(255, 255, 255, 0.2)'
}),
//描边样式(线)
stroke: new ol.style.Stroke({
color: '#ffcc33',
width: 2
}),
//图像样式
image:image,
//文字样式
text:new ol.style.Text({
font:'20px sans-serif',//字体大小,样式
offsetX:0,//水平文本偏移量(以像素为单位)
offsetY:0,//垂直文本偏移量(以像素为单位)
scale:1,//字体放大倍数
rotation:(Math.PI/180)*30,//旋转角度(顺时针旋转)
text:'哇哈哈',//文字内容
textAlign:'center',// 文字对齐方式 'left','right','center'
fill:new ol.style.Fill({//文字填充颜色
color: 'green'
}),
stroke: new ol.style.Stroke({//描边样式
color: '#fff',
width: 2
}),
padding:[0,0,0,0],//在文本周围填充像素
})
})

矢量样式里的图像样式:image

//图像样式(点)
let image = new ol.style.Circle({
radius: 10,
fill: new ol.style.Fill({
color: 'red'
}),
stroke: new ol.style.Stroke({
color: '#ffcc33',
width: 2
})
})
//如果是图标
let image = new ol.style.Icon({
src:'',//图片来源
color:'',//图标颜色,
opacity:1,//透明度
scale:1,//放大缩小倍数
rotation:(Math.PI/180)*deg,//旋转角度,顺时针旋转
})
//如果是正方形
let image = new ol.style.RegularShape({
fill: new ol.style.Fill({
color: 'red'
}),//填充色
stroke: new ol.style.Stroke({
color: '#ffcc33',
width: 2
}),//边线样式
points: 4,//边数
radius: 10,//半径
angle: (Math.PI/4),//形状的角度(弧度单位)
rotation:(Math.PI/180)*deg,//旋转角度
rotateWithView:false,//是否跟随视图旋转形状
})
//如果是五角星
let image = new ol.style.RegularShape({
fill: new ol.style.Fill({
color: 'red'
}),//填充色
stroke: new ol.style.Stroke({
color: '#ffcc33',
width: 2
}),//边线样式
points: 5,//边数
radius: 10,//半径
radius2: 4,//内半径
angle: 0//形状的角度(弧度单位)
})
//如果是三角形
let image = new ol.style.RegularShape({
fill: new ol.style.Fill({
color: 'red'
}),//填充色
stroke: new ol.style.Stroke({
color: '#ffcc33',
width: 2
}),//边线样式
points: 3,//边数
radius: 10,//半径
rotation: (Math.PI/180)*deg,//旋转角度
angle: 0//形状的角度(弧度单位)
})
//如果是十字
let image = new ol.style.RegularShape({
fill: new ol.style.Fill({
color: 'red'
}),//填充色
stroke: new ol.style.Stroke({
color: '#ffcc33',
width: 2
}),//边线样式
points: 4,//边数
radius: 10,//半径
radius2: 0,//内半径
angle: 0//形状的角度(弧度单位)
})
//如果是X型
let image = new ol.style.RegularShape({
fill: new ol.style.Fill({
color: 'red'
}),//填充色
stroke: new ol.style.Stroke({
color: '#ffcc33',
width: 2
}),//边线样式
points: 4,//边数
radius: 10,//半径
radius2: 0,//内半径
angle: (Math.PI/4)//形状的角度(弧度单位)
})

矢量样式style的方法:

//克隆
style.clone()
//获取
style.getFill()
style.getStroke();
style.getImage();
style.getText();
//设置
style.setFill(fill)
style.setImage(image)
style.setStroke(stroke)
style.setText(text)

矢量图层源:point,line,polygon,wkt

//矢量图层源 :point,line,polygon,wkt
let source = new ol.source.Vector({
features:[point,line,polygon,wkt]//矢量
})
//矢量点 - 图标
let point = new ol.Feature(
new ol.geom.Point([108,34])
)
//矢量 线
let line = new ol.Feature(
new ol.geom.LineString([[108,34],[100,34],[100,40]])
)
//矢量面
let polygon = new ol.Feature(
new ol.geom.Polygon([[[90,34],[108,34],[90,40]]])
)
//wkt
let wktData = 'POLYGON((10.689 -25.092, 34.595 ' +
'-20.170, 38.814 -35.639, 13.502 ' +
'-39.155, 10.689 -25.092))';
let wkt = (new ol.format.WKT()).readFeature(wktData, {
dataProjection: 'EPSG:4326',//数据的投影
featureProjection: 'EPSG:3857'//创建的要素几何的投影
})

矢量图层源:geojson

//矢量图层源:geojson
//加载方法一
let source = new ol.source.Vector({
url:'data.geojson',//geojson 路径
format: new ol.format.GeoJSON({
dataProjection:'EPSG:4326',//默认数据投影'EPSG:4326'
})
})
//加载方法二
let source = new ol.source.Vector({
features: (new ol.format.GeoJSON()).readFeatures(geojsonData)
})

矢量图层源:topjson

//矢量图层源:topjson
let source = new ol.source.Vector({
url: 'topjson.json',//路径
format: new ol.format.TopoJSON({
layers: ['countries'] //子级名称
}),
overlaps: false,//该源可能具有重叠的几何形状,是否重叠
})

矢量图层源:kml

//矢量图层源:kml
let source = new ol.source.Vector({
url: "data.kml",
format: new ol.format.KML({
extractStyles:true,//从KML中提取样式
showPointNames:true,//将名称显示为包含点的地标的标签
writeStyles:true,//将样式写入KML
})
})

矢量图层源:gpx

let source = new ol.source.Vector({
// GPX数据路径
url: 'data.gpx',
// 指定数据格式为GPX
format: new ol.format.GPX()
})

矢量图层源:mvt

let source = new ol.source.VectorTile({
format: new ol.format.MVT(),
url: '',//数据路径
})

矢量图层源 source 的自身方法:

//source 方法
//添加-删除feature
source.addFeature(feature)
source.removeFeature(feature)
source.addFeatures(features)
//遍历feature
source.forEachFeature(callback)
//获取
source.getFeatureById(id)
source.getFeatures()
//绑定事件-取消事件 type事件类型,listener函数体
source.on(type,listener)
source.un(type,listener)

矢量点聚合Cluster

//点聚合Cluster
let clusterSource = new ol.source.Cluster({
distance:20,//间隔最小距离,默认20像素
source: source,//资源,点
});
//设置距离
clusterSource.setDistance(10)

【07】openlayers 矢量图层的更多相关文章

  1. OpenLayers在多个矢量图层编辑要素

    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"> <html> <head ...

  2. openlayers3 在地图上叠加WFS查询矢量图层

    随着终端设备计算能力的加强,用户在使用地图的时候也须要越来越多的交互效果. 比方如今非常火的室内导航,为了获得好的用户体验,就须要当用户单击某一商店的时候该商店的颜色能对应的变化.这就须要叠加矢量图层 ...

  3. GeoServer中利用SLD配图之矢量图层配图

    文章版权由作者李晓晖和博客园共有,若转载请于明显处标明出处:http://www.cnblogs.com/naaoveGIS/. 1 背景 我们在ArcMap中可以直接通过symbol功能对图层进行定 ...

  4. (十二) WebGIS中矢量图层的设计

    文章版权由作者李晓晖和博客园共有,若转载请于明显处标明出处:http://www.cnblogs.com/naaoveGIS/. 1.前言 在前几章中我们已经了解了什么是矢量查询.屏幕坐标与地理坐标之 ...

  5. (七)WebGIS中栅格、矢量图层设计之栅格、矢量图层的本质

    文章版权由作者李晓晖和博客园共有,若转载请于明显处标明出处:http://www.cnblogs.com/naaoveGIS/. 1.何为栅格数据,何为矢量数据? 在GIS中,对于数据格式的分类,我们 ...

  6. QGis(三)查询矢量图层的要素属性字段值(转载)

    QGis(三)查询矢量图层的要素属性字段值 https://github.com/gwaldron/osgearth/issues/489 当加载一个矢量图层后,如果要查看要素的属性字段值,则需要实现 ...

  7. ArcGIS统计栅格像元值并转换为矢量图层

    很多时候,我们需要得到矢量数据区域所对应栅格数据的像元统计值(求平均.求和等),然后将获得的统计值赋给矢量图层的属性表,在ArcGIS中操作如下:(PS:第一次写技术文章,望大家多多体谅与支持,么么哒 ...

  8. Qt+QGIS二次开发:向shp矢量图层中添加新的字段

    添加一个新的字段到shp文件中,并且从Excel里导入数据到该字段.原shp文件里的字段ID应该与Excel里的字段ID一一对应才能正确的导入.下图分别是shp的字段和Excel的字段 将class字 ...

  9. Qt+QGis二次开发:矢量图层的显示样式

    原文链接:QGis二次开发基础 -- 矢量图层的显示样式

随机推荐

  1. 《你不知道的Javascript》学习笔记

    简介 众所周知,JavaScript 既是一门充满吸引力.简单易用的语言,又是一门具有许多复杂微妙技术的语言,即使是经验丰富的JavaScript 开发者,如果没有认真学习的话也无法真正理解它们. 如 ...

  2. spring+mybatis+shiro入门实例

    sql: 1 /* 2 SQLyog Ultimate v11.33 (64 bit) 3 MySQL - 5.1.49-community : Database - db_shiro 4 ***** ...

  3. mudbox卸载/完美解决安装失败/如何彻底卸载清除干净mudbox各种残留注册表和文件的方法

    在卸载mudbox重装mudbox时发现安装失败,提示是已安装mudbox或安装失败.这是因为上一次卸载mudbox没有清理干净,系统会误认为已经安装mudbox了.有的同学是新装的系统也会出现mud ...

  4. 【待填坑】LG_4996_咕咕咕

    正解思路和[AHOI]的中国象棋非常相似,同样是利用状态不一定一定要表示出来,利用组合数学递推节省枚举时间.

  5. docker 使用:镜像和容器

    docker 镜像 docker image是一个极度精简版的Linux程序运行环境,官网的java镜像包括的东西更少,除非是镜像叠加方式的如centos+java7,需要定制化build的一个安装包 ...

  6. HTTP接口抓包工具之Fiddler

    Fiddler的基本功能介绍: Fiddler是最强大最好用的Web调试工具之一,它能记录所有客户端和服务器的http和https请求,允许你监视,设置断点,甚至修改输入输出数据,Fiddler包含了 ...

  7. JMeter之BeanShell断言---获取时间戳

    1.创建线程组,创建一个BeanShell Sampler,在其中编写BeanShell脚本. 2.在Jmeter中,可以利用${__time(,)}时间戳函数来获取十位的时间戳,如: vars.pu ...

  8. iOS 编程:NSURLSession

    定义:描述 Foundation 框架类在标准的网络传输协议下,用 URLs 连接因特网并与服务器交互的一整套体系. 支持的传输协议: File Transfer Protocol (ftp://) ...

  9. connect() failed (111: Connection refused) while connecting to upstream报错处理

    新lnmp环境调试项目时,nginx报错如下: 解决: 发现php-fpm.conf是以套接字方式通信,而nginx是以端口方式通信,见下图: 将nginx.conf修改为如下,重新reload即可

  10. Find a way (广度优先搜索)

    题目: Pass a year learning in Hangzhou, yifenfei arrival hometown Ningbo at finally. Leave Ningbo one ...