当前位置: 首页 > news >正文

在Next.js和React中搭建Cesium项目

在Next.js和React中搭建Cesium项目,需要确保Cesium能够与服务端渲染(SSR)兼容,因为Next.js默认是SSR的。Cesium是一个基于WebGL的地理信息可视化库,通常用于在网页中展示三维地球或地图。下面是一个基本的步骤,用于在Next.js项目中集成Cesium。

步骤1:创建Next.js项目

通过下面的命令来创建Next.js项目,过程中有一些选项根据需求选择就行:

npx create-next-app my-cesium-project
cd my-cesium-project

在这里插入图片描述

步骤2:安装Cesium

通过npm或yarn安装Cesium:

npm install cesium
# 或者
yarn add cesium

步骤3:配置Cesium

在Next.js中,自定义next.config.js以正确地包含Cesium资源,因为Cesium有一些静态资产和Webpack的特殊要求。

// next.config.js
const path = require('path');
const { DefinePlugin } = require('webpack');module.exports = {webpack: (config, { isServer }) => {// 解析cesium导入别名config.resolve.alias = {...config.resolve.alias,cesium: path.resolve(__dirname, 'node_modules/cesium/Source')};// 定义与cesium相关的全局变量config.plugins.push(new DefinePlugin({CESIUM_BASE_URL: JSON.stringify('/cesium')}));if (!isServer) {// 这是一个解决SSR(服务器端渲染)中“窗口未定义”错误的方法。config.externals = config.externals.map(external => {if (typeof external !== 'function') return external;return (context, request, callback) => {if (request.match(/^cesium/)) return callback();return external(context, request, callback);};});}return config;},// 添加服务器端重写规则,以便从/public/cesium服务于Cesium静态资源async rewrites() {return [{source: '/cesium/:path*',destination: '/cesium/:path*' // Proxy to Folder}];}
};

步骤4:在组件中使用Cesium

接下来就可以在React组件中使用Cesium了。下面是一个简单的使Cesium在浏览器环境中初始化的例子:

// src/app/page.js
"use client"
import React, { useEffect } from 'react';// Ensure Cesium is only imported in the client-side bundle
if (typeof window !== "undefined") {var Cesium = require('cesium/Cesium');require('cesium/Widgets/widgets.css');
}const CesiumMap = () => {useEffect(() => {if (typeof window !== "undefined") {// Cesium will be initialized hereCesium.Ion.defaultAccessToken = 'your_access_token';const viewer = new Cesium.Viewer('cesiumContainer', {terrainProvider: Cesium.createWorldTerrain()});// Add Cesium camera, entities, and so on...}}, []);return (<div><div id="cesiumContainer" style={{ width: '100%', height: '100vh' }} /></div>);
};export default CesiumMap;

请确保替换 ‘your_access_token’ 为你从Cesium Ion获取的有效访问令牌。

步骤5:添加Cesium静态资源

由于Cesium需要加载一些静态资源,你需要将这些资源从node_modules/cesium/Build/Cesium复制到public/cesium文件夹中。

步骤6:运行Next.js应用

运行Next.js应用,并在浏览器中查看Cesium地图:

npm run dev
# 或者
yarn dev

打开浏览器并访问 http://localhost:3000来查看你的Cesium地图。
在这里插入图片描述

http://www.lryc.cn/news/265326.html

相关文章:

  • docker学习(十、搭建redis集群,三主三从)
  • ES排错命令
  • 爬虫实战案例 -- 爬取豆瓣读书网页内容
  • 某电子文档安全管理系统 SQL注入漏洞复现
  • ant-design-vue Message 用法以及内容为 html片段情况
  • 2024 Move 开发者大会火热报名中!1 月 13 至 14 日上海见
  • hbase用shell命令新建表报错ERROR: KeeperErrorCode = NoNode for /hbase/master
  • PyQt中的冒号(:)
  • yolo-nas无人机高空红外热数据小目标检测(教程+代码)
  • Ubuntu22.04安装python2
  • 【Amazon 实验①】Amazon WAF功能增强之实验环境准备
  • Qt不能在线程函数操作UI
  • web网页端使用webSocket实现语音通话功能(SpringBoot+VUE)
  • 读取spring boot项目resource目录下的文件
  • R语言生物群落(生态)数据统计分析与绘图实践技术
  • c# OpenCV 检测(斑点检测、边缘检测、轮廓检测)(五)
  • PHP下载安装以及基本配置
  • 黑苹果安装经验总结2023-12
  • 基于深度学习的森林火焰烟雾检测系统(含UI界面,yolov8、Python代码,数据集)
  • 测试开发体系介绍——测试体系介绍-L1
  • Linux中的链接运算符详解 - 提高编程效率与性能
  • JS模块化规范之ES6及UMD
  • XM平台官网开户注册流程图解
  • 【Linux进阶之路】线程
  • 个性化TikTok外贸工具定制!突破营销新境界!
  • 设计模式-门面模式
  • 搭建接口自动化测试框架python+requests+pytest
  • 一套rk3588 rtsp服务器推流的 github 方案及记录 -02
  • docker运行java程序的Dockerfile
  • docker数据卷数据卷容器