maptalks 开发GIS地图(18)maptalks.three.11 - buildings

1. 三维建筑应该是GIS中比较典型的应用了,不论是高德百度还是其他的开发库,支持三维地图

显示是比较重要的一个环节。

 

2. 建筑数据使用的是 ./threelayer/demo/buildings.js 。 这样的数据使用的是json格式的,而不是geojson。

 

3. 使用 toExtrudeMesh 函数对建筑数据进行实例。

 featrures.forEach 是对每条记录进行处理。在处理的过程中,使用getColor获取建筑颜色。

 代码调试可以查看到features的数据量为2105个记录。

 1 threeLayer.prepareToDraw = function (gl, scene, camera) {
 2     var me = this;
 3     var light = new THREE.DirectionalLight(0xffffff);
 4     light.position.set(0, -10, 10).normalize();
 5     scene.add(light);
 6 
 7     features.forEach(function (g) {
 8         var heightPerLevel = 10;
 9         var levels = g.properties.levels || 1;
10         var color = getColor(levels);
11 
12         var m = new THREE.MeshPhongMaterial({color: color, opacity : 0.7});
13         //change to back side with THREE <= v0.94
14         // m.side = THREE.BackSide;
15 
16         var mesh = me.toExtrudeMesh(maptalks.GeoJSON.toGeometry(g), levels * heightPerLevel, m, levels * heightPerLevel);
17         if (Array.isArray(mesh)) {
18           scene.add.apply(scene, mesh);
19         } else {
20           scene.add(mesh);
21         }
22     });
23 };
24 threeLayer.addTo(map);

 

4. 页面显示

 

 

5. 源码地址

https://github.com/WhatGIS/maptalkMap/tree/main/threelayer/demo

 

posted @ 2021-05-06 10:24  googlegis  阅读(487)  评论(0编辑  收藏  举报

坐标合肥,非典型GIS开发人员 GitHub