cesium采用primitive方式加载geojson数据
cesium采用primitive方式加载geojson数据
cesium加载geojson数据有自带的接口GeoJsonDataSource和演示 示例,使用的是entity方式来加载数据,而entity封装的是primitive,所以想用原生的primitive方式来加载geojson数据试试。使用的数据是全球国家区划的json,在这里分别给出两种方式的代码和效果。
- 自带接口GeoJsonDataSource(entity方式)
主要代码
var geojsonOptions = {clampToGround : true //使数据贴地
};
var entities;
var promise =Cesium.GeoJsonDataSource.load('../data/json/world.json', geojsonOptions);
promise.then(function (dataSource) {viewer.dataSources.add(dataSource);entities =dataSource.entities.values;for (var i = 0; i < entities.length;i++) {var entity = entities[i];// 赋随机颜色var color=Cesium.Color.fromRandom({alpha: 0.7});entity.polygon.fill = true;entity.polygon.material = color;entity.polygon.outline = true;entity.polygon.outlineColor = Cesium.Color.YELLOW;}
});
效果
- 原生的primitive方式
主要代码
var urlpath = "../data/json/world.json"
$.get(urlpath, function (data) {const josnN = JSON.parse(data);const features = josnN.features;addDataToGlobe(features);
})
function addDataToGlobe(features){const instances = [];for(let i=0; i<features.length; i++){for(let j=0; j<features[i].geometry.coordinates.length; j++){const polygonArr = features[i].geometry.coordinates[j].toString().split(',');const polygon = new Cesium.PolygonGeometry({polygonHierarchy : new Cesium.PolygonHierarchy(Cesium.Cartesian3.fromDegreesArray(polygonArr)),vertexFormat: Cesium.PerInstanceColorAppearance.VERTEX_FORMAT});const geometry = Cesium.PolygonGeometry.createGeometry(polygon);instances.push(new Cesium.GeometryInstance({geometry : geometry,attributes : {color : Cesium.ColorGeometryInstanceAttribute.fromColor(Cesium.Color.fromRandom({alpha : 0.7})),},}));}}const primitive = new Cesium.Primitive({geometryInstances : instances,appearance : new Cesium.PerInstanceColorAppearance({ // 为每个instance着色translucent : true,closed : false}),asynchronous : false, // 确定基元是异步创建还是阻塞直到准备就绪});scene.primitives.add(primitive);
}
效果
对比两种加载方式发现:
1、第二种加载速度比第一种快很多
2、第一种方式加载后,移动缩放地球有延迟现象,比较卡。第二种方式无。
3、第二种方式加载后的效果视觉上比第一种好
以上结论仅作参考,不同数据得到的结果可能不同
cesium采用primitive方式加载geojson数据相关推荐
- ceisum 加载geojson,使用 Cesium 动态加载 GeoJSON 数据
前言 需求是这样的,我需要在地图中显示 08 年到现在的地震情况,地震都是发生在具体的时间点的,那么问题就来了,如何实现地震情况按照时间动态渲染而不是一次全部加载出来. 一. 方案分析 这里面牵扯到两 ...
- ThreeJS加载geojson数据实现3D地图
ThreeJS加载geojson数据实现3D地图,主要通过借助geojson地理信息数据转摩托尔坐标实现,中间借助了d3.js的地图处理方法,最后通过threejs渲染到页面上: 通过平台获取GeoJ ...
- ceisum 加载geojson,webgl 加载geojson数据没有贴地
我有一份geojson数据: const smc={"type":"FeatureCollection", "features": [ {& ...
- Cesium加载GeoJson数据(shp转化的json数据)
1.shp转换成json格式 此处整理了两种shp转为json格式的方式:一是使用工具:二是使用ArcGIS进行转换. 1.1.ArcGIS转换 1.使用ArcGIS将shp文件的地理坐标设置为WGS ...
- Android --- RecycleView下拉刷新,item中的图片闪烁,图片采用Glide方式加载
错误代码: Glide.with(context).load(QiNiuRef.domain + "/"+item.get("teacherImageId")) ...
- Cesium开发基础笔记总结(加载影像、加载地形数据、加载矢量)
Cesium开发基础笔记总结 学习总结于GIS李胜老师博客 Cesium开发基础01加载影像数据 加载影像数据 Cesium中的影像图层类: 无论是二维地图还是三维地图,如果缺少了底图影像或电子地图, ...
- Cesium加载大数据量地下管线
Cesium加载大数据量地下管线 Cesium优化加载 管线加载 管井.摄像头.交通信号灯等模型加载 与倾斜摄影模型结合加载 Cesium优化加载 管线.管井.路灯.交通信号灯.接电箱等模型使用Pri ...
- cesium加载GeoJSON
cesium加载GeoJSON 介绍GeoJSON GeoJson是Json数据(键值对),它是针对地理数据的一个变种 具体的参考文档:GeoJSON 面要素 多边形json数据 {"typ ...
- 不同API加载geojson
1.mapboxgl:在底图上叠加geojson格式的矢量数据切片 <!DOCTYPE html> <html> <head><meta charset='u ...
最新文章
- FPGA之道(75)静态时序分析(一)基本概念介绍
- 51CTO博客弹出框精彩博文记录【2013年第二季度】
- 为什么Control类提供了Invoke和BeginInvoke机制
- 转载--SqlAlchemy ORM 学习
- 如何在ASP.NET Core中使用SignalR构建与Angular通信的实时通信应用程序
- python 字体_python docx字体设置
- 蛇形数组打印(两种形式)
- 【计算机科学基础】存储程序原理
- Python 标准库之单元测试框架 -- unittest
- Android ListView下拉与上拉刷新加载更多数据 二
- Spring事件机制Event源码解析(未完待续)
- MVC5 Entity Framework学习参加排序、筛选和排序功能
- 计算机科学导论的试题,《计算机科学导论》期末考试试题
- IEC 61850标准中ACSI映射实现研究
- 计算机应用基础第一章ppt,计算机应用基础第一章课件.ppt
- 2014版C 语言程序设计基础,清华大学出版社-图书详情-《C/C++程序设计基础与实践教程》...
- mysql 父子关系查询_如何让MySQL中单句实现无限层次父子关系查询
- iPhone 检测 iPhone X 设备的几种方式和分辨率终极指南
- yii mysql gii_Yii2.0开发——使用Gii生成代码的简单实践
- 软重启、硬重启、重启、重置概念介绍