三维场景中,地形和栅格来组成了三维的基础,但更多的业务还是需要 点线面等矢量数据来充实, 这就是我们的矢量数据图层。

#1. 图层类型清单

当前主要使用的矢量图层,是指GraphicLayer 类及其子类对象。 矢量图层中可以通过addGraphic方法来加入各类型 的矢量数据 来组成。

目前常用的矢量图层有以下类型:

type类型名 图层说明 对应的图层类 备注
graphic 矢量数据图层 mars3d.layer.GraphicLayer
geojson GeoJSON图层 mars3d.layer.GeoJsonLayer
model gltf小模型图层 mars3d.layer.ModelLayer
lodGraphic LOD分层分块加载矢量图层 mars3d.layer.LodGraphicLayer
wfs OGC WFS图层 mars3d.layer.WfsLayer
arcgis_wfs ArcGIS WFS图层 mars3d.layer.ArcGisWfsLayer

#2. 矢量图层的创建及使用

#2.1 快速开始(初始化 new Map 时传入)

在构造Map时传入layers参数中配置相关图层,并设置show:true后进行初始化加载矢量图层

var map = new mars3d.Map('mars3dContainer', {layers: [{"id":1987,"type": "geojson","name": "示例数据","url": "http://data.mars3d.cn/file/geojson/geojson-draw.json","popup": "{name}","show": false}]
})
//可以通过下面方法获取到配置的图层
let tiles3dLayer = map.getLayer(1987,'id')

#2.2 代码中创建图层

可以有下面2种方式来创建图层对象:

//用工厂方法,指定type来创建图层对象
var wfsLayer = mars3d.LayerUtil.create({name: '合肥教育点',type: 'wfs',url: 'http://server.mars3d.cn/geoserver/mars/wfs',layer: 'mars:hfjy',parameters: {maxFeatures: 500,},minimumLevel: 13,symbol: {type: 'billboardP',styleOptions: {image: 'img/marker/mark1.jpg',verticalOrigin: Cesium.VerticalOrigin.BOTTOM,clampToGround: true,},},popup: 'all',show: true,
})
map.addLayer(wfsLayer)//直接创建具体类型的图层对象
var geoJsonLayer = new mars3d.layer.GeoJsonLayer({name: '标绘示例数据',url: 'http://data.mars3d.cn/file/geojson/geojson-draw.json',popup: '{type} {name}',flyTo: true,
})
map.addLayer(geoJsonLayer)

在Map创建后可以通过map.addLayer 和map.removeLayer 方法来控制图层的加载和删除。

在图层本身也有 layer.addTo 和layer.remove 2个方法支持添加或移除图层。

#3 常用矢量图层类

#3.1 GraphicLayer

矢量数据图层

//创建矢量数据图层
let graphicLayer = new mars3d.layer.GraphicLayer()
map.addLayer(graphicLayer)//加载数据到矢量图层
let graphic = new mars3d.graphic.LabelEntity({position: new mars3d.LatLngPoint(116.1, 31.0, 1000),style: {text: 'Mars3D三维可视化平台',font_size: 25,color: '#003da6',},
})
graphicLayer.addGraphic(graphic)

运行效果

#3.2 GeoJsonLayer

GeoJSON是适合于Web下对各种地理数据结构进行编码的格式,基于Javascript对象表示法的地理空间信息数据交换格式。与普通json文件格式区别在于对其属性及组成由一定规范。

GeoJSON将所有的地理要素分为Point、MultiPoint、LineString、MultiLineString、Polygon、MultiPolygon、GeometryCollection。首先是将这些要素封装到单个的geometry里,然后作为一个个的Feature(要素);要素放到一个要素集合里构成。

GeoJSON是平台很重要的数据格式,当前平台内矢量数据均支持导出GeoJSON和导入GeoJSON格式。

let geoJsonLayer = new mars3d.layer.GeoJsonLayer({name: '省界线',url: 'http://data.mars3d.cn/file/geojson/sheng-line.json',symbol: {//可以通过配置symbol参数来指定渲染的矢量数据类型和样式。type:"polyline",styleOptions: {color: '#ffffff',opacity: 0.8,width: 2},},
})
map.addLayer(geoJsonLayer)

常用geojson相关网站:

  • 在线生成 GeoJSON:geojson.io
  • SHP转GeoJSON:mapshaper
  • 中国行政区划GeoJSON下载:阿里云 DataV - 数据可视化平台

#3.1 WFS 图层

平台支持 通过WfsLayer类 来加载OGC WFS(如GeoServer)服务 、通过ArcGisWfsLayer类 来加载ArcGIS Server 服务发布的矢量数据的加载。

//OGC WFS
var wfsLayer = new mars3d.layer.WfsLayer({name: '合肥教育点', url: 'http://server.mars3d.cn/geoserver/mars/wfs',layer: 'mars:hfjy',parameters: { maxFeatures: 500, //支持所有wfs的参数},minimumLevel: 13,debuggerTileInfo: false,symbol: {//可以通过配置symbol参数来指定渲染的矢量数据类型和样式。type: 'billboardP',styleOptions: {image: 'img/marker/mark1.jpg',verticalOrigin: Cesium.VerticalOrigin.BOTTOM,clampToGround: true,},},popup: 'all',
})
map.addLayer(wfsLayer)//ArcGIS WFS
var wfsLayer = new mars3d.layer.ArcGisWfsLayer({name: '兴趣点',url: 'http://server.mars3d.cn/arcgis/rest/services/mars/hefei/MapServer/1',minimumLevel: 16,symbol: {//可以通过配置symbol参数来指定渲染的矢量数据类型和样式。type: 'billboardP',styleOptions: {image: 'img/marker/mark3.jpg',verticalOrigin: Cesium.VerticalOrigin.BOTTOM,clampToGround: true,},},popup: '名称:{NAME}<br />地址:{address}',show: true,
})
map.addLayer(wfsLayer)

可以通过配置symbol参数来指定渲染的矢量数据类型和样式。

#2.4 graphicGroup 矢量图层组

目前平台提供了type:'graphicGroup'的GraphicGroupLayer类 类型图层,可以用于图上标绘 的 多图层标绘控制及管理,具体参考 基础项目的 图上标绘 功能。

Mars3D开发基础学习:矢量图层相关推荐

  1. Mars3D开发基础学习:栅格瓦片图层

    前面我们说到地形是三维场景的"骨骼",栅格瓦片图层就是我们浏览三维能感知的"皮肤"了,通常我们叠加的是各种卫星影像或瓦片数据. Mars3D支持多种服务来源的高 ...

  2. Mars3D开发基础学习:矢量数据

    矢量数据 是用经度.纬度.高度坐标来表示地图图形或地理实体位置的数据,一般是通过记录坐标的方式来尽可能将地理实体的空间位置表现的准确无误,常见的矢量数据有:点.线.面.体等格式. #1. 矢量数据对象 ...

  3. Mars3D开发基础学习:坐标系及坐标变换

    只要涉及到地图开发,无论如何关于坐标系的概念是逃不掉的,谁让地球它是个球呢. 地球就像个橘子 不同的坐标系就是不同的剝橘子的方法 这里就不列举国内常用的坐标系及转换方法,大家可以自行百度. 相关GIS ...

  4. Mars3D开发基础学习:场景特效

    平台支持一些场景特效,包括 雾天气,雨天气,雪天气, 泛光特效,亮度效果,夜视效果,黑白效果,马赛克效果,景深效果 等. #1. 特效的底层实现:后处理(Post Processing) 特效底层是使 ...

  5. Mars3D开发基础学习:相机Camera及视角控制

    Camera相机控制了三维场景的视图.有很多方法可以操作Camera,如旋转(rotate).缩放(zoom).平移(pan)和飞到目的地(flyTo).同时也有鼠标和触摸事件用来处理与Camrea的 ...

  6. Mars3D开发基础学习:glTF小模型

    glTF全称是 Graphics Language Transmission Format (图形语言传输格式),是一种针对GL(WebGL,OpenGL ES以及OpenGL)接口的运行时资产传递格 ...

  7. Mars3D开发基础学习:Material材质

    在真实世界里,每个物体会对光产生不同的反应.钢看起来比陶瓷花瓶更闪闪发光,一个木头箱子不会像钢箱子一样对光产生很强的反射.每个物体对镜面高光也有不同的反应.有些物体不会散射(Scatter)很多光却会 ...

  8. Mars3D开发基础学习:Property属性机制

    平台是数据驱动和 time-dynamic visualization,这些可都是仰仗Property属性机制来实现的. Property最大的特点是和时间相互关联,在不同的时间可以动态地返回不同的属 ...

  9. 虚幻引擎虚拟现实开发基础学习教程

    流派:电子学习| MP4 |视频:h264,1280×720 |音频:AAC,44.1 KHz 语言:英语+中英文字幕(根据原英文字幕机译更准确)|大小解压后:3.93 GB |时长:5h 15m 了 ...

最新文章

  1. 每日一皮:今天在公司听到一句惨绝人寰骂人的话
  2. python sql语句传参数_pyMySQL SQL语句传参问题,单个参数或多个参数说明
  3. [转]我们需要IQ吗?--敬以此文献给和我一样迷茫,浮躁的人,共勉!
  4. redis - 基础
  5. 表的插入、更新、删除、合并操作_9_插入默认值
  6. maven静态资源导出(Ctrl+C+V)
  7. python处理行情数据_请教 Python 如何解析 DBF 文件, SJSHQ.dbf 上交所行情文件,数据来源于巨灵数据。...
  8. 把windows装到linux下,如何将WSL(Windows Subsystem for Linux 2)安装到Windows 10?
  9. Flutter UiKitView 嵌入iOS原生View
  10. 四年一度的菲尔兹奖揭晓,4位数学家折桂
  11. 80. Session
  12. android平板电脑维修电路图,图解Windows10平板电脑电路原理和维修
  13. java实习简历_怎么样写一份比较好的Java实习生的简历?
  14. sql server插入语句
  15. js批量创建钱包地址并保存私钥
  16. 剖析美国大片《西部世界》 嵌入式技术应用新高度
  17. 基于JavaFX实现的葫芦娃大战妖精游戏设计
  18. ios 程序发布成ipa 文件 通过 web 下载和安装。install App via OTA
  19. 利用万能数据结构表存储多源异构数据
  20. MyOwnFreeHost免费分销空间定制模板管理用户WHMCS整合和空间运营

热门文章

  1. JavaScript中的 this指向问题
  2. maven 排除某个类_Maven exclusions(排除依赖)
  3. 华大单片机GPIO配置
  4. 图像滤波【一】:从高斯滤波到引导滤波
  5. 3dsmax小车模型
  6. Webpack 3.0来了,就问你慌不慌
  7. Nacos客户端本地缓存和故障转移
  8. 现代通信原理A.2:FIR低通滤波器设计
  9. 集成电路模拟版图入门-版图基础学习笔记(二)
  10. 网络安全技术与黑客攻击威胁