ThreeJS 地球上撒点

时间:2020-05-21
本文章向大家介绍ThreeJS 地球上撒点,主要包括ThreeJS 地球上撒点使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。

环境

  • ThreeJS 107版本
  • three.min.js
  • OrbitControls.js

说明

撒点功能原理是在地球上根据坐标批量加上圆对象,可以设置颜色和球大小。

解决方案

  1. 创建球的过程参见"ThreeJS制作地球"

  2. 创建点group,考虑后面会做删除功能,所以把所有的实体都以group组为单位添加,后续方便做删除

// 标记点组合
var marking = new THREE.Group();
  1. 根据数据,循环添加圆以及材质
for (var i = 0; i < _markData.length; i++) {
// 创建标记点球体
var mark = new THREE.Mesh(new THREE.SphereGeometry(radius, 30, 30), new THREE.MeshBasicMaterial({
color: _style.color ? _style.color : '#1bb4b0'
}));
// 获取标记点坐标
var markPos = this.getPosition(_markData[i].attributes.x + 90, _markData[i].attributes.y, 30);
mark.position.set(markPos.x, markPos.y, markPos.z);
marking.add(mark);
}
scene.add(marking);
  1. 经纬度转球坐标
this.getPosition = function (_longitude, _latitude, _radius) {
var lg = THREE.Math.degToRad(_longitude);
var lt = THREE.Math.degToRad(_latitude);
var temp = _radius * Math.cos(lt);
var x = temp * Math.sin(lg);
var y = _radius * Math.sin(lt);
var z = temp * Math.cos(lg);
return {
x: x,
y: y,
z: z
}
}

附上效果图

原文地址:https://www.cnblogs.com/giser-s/p/12928595.html