7、添加billboard小旗子

news/2025/2/6 6:51:25/

        本节演示添加billboard小旗子,使用第四节click的例子,通过鼠标点击地图添加billboard添加小旗子。

1、修改鼠标点击事件mouseUp,在函数中创建BillboardCollection对象并添加到地图中。鼠标点击时获取鼠标位置,转换成经纬度然后添加billboard。

static void mouseUp(void *handler, Cesium::ScreenEvent *event) {Handler *aggregator = (Handler *) handler;if (aggregator->billboards == NULL) {// 创建BillboardCollectionaggregator->billboards = new Cesium::BillboardCollection(NULL);aggregator->viewer->_scene->primitives()->add(aggregator->billboards);}glm::dvec2 position = event->position;//鼠标屏幕位置glm::dvec3 coor, carthposition;//转换成经纬度,与cesium基本一致aggregator->viewer->_scene->_camera->pickEllipsoid(position,aggregator->viewer->_scene->_globe->_ellipsoid,&coor);aggregator->viewer->_scene->_globe->_ellipsoid->cartesianToCartographic(coor, &carthposition);double longitude = Cesium::CesiumMath::toDegrees(carthposition.x);double latitude = Cesium::CesiumMath::toDegrees(carthposition.y);//添加billboardglm::dvec3 initialPosition2 = Cesium::Cartesian3::fromDegrees(longitude, latitude);aggregator->billboards->add(initialPosition2, "../data/home.png");}

2、运行地图,点击地图即可添加一个billboard。

完整代码

/*** Created by IBM on 2021/3/3.*/
#include <iostream>
#include <Widgets/Viewer/Viewer.h>
#include <Scene/BillboardCollection.h>class Handler {
public:Cesium::Viewer *viewer;Cesium::BillboardCollection *billboards = NULL;/*** 鼠标抬起事件* @param type* @param position*/static void mouseUp(void *handler, Cesium::ScreenEvent *event) {Handler *aggregator = (Handler *) handler;if (aggregator->billboards == NULL) {// 创建BillboardCollectionaggregator->billboards = new Cesium::BillboardCollection(NULL);aggregator->viewer->_scene->primitives()->add(aggregator->billboards);}glm::dvec2 position = event->position;//鼠标屏幕位置glm::dvec3 coor, carthposition;//转换成经纬度,与cesium基本一致aggregator->viewer->_scene->_camera->pickEllipsoid(position,aggregator->viewer->_scene->_globe->_ellipsoid,&coor);aggregator->viewer->_scene->_globe->_ellipsoid->cartesianToCartographic(coor, &carthposition);double longitude = Cesium::CesiumMath::toDegrees(carthposition.x);double latitude = Cesium::CesiumMath::toDegrees(carthposition.y);//添加billboardglm::dvec3 initialPosition2 = Cesium::Cartesian3::fromDegrees(longitude, latitude);aggregator->billboards->add(initialPosition2, "../data/home.png");}
};int main(int argc, char *argv[]) {Handler *handler = new Handler();Cesium::Viewer viewer = Cesium::Viewer(500, 300);handler->viewer = &viewer;std::string url = "https://dev.virtualearth.net";std::string key = "AmXdbd8UeUJtaRSn7yVwyXgQlBBUqliLbHpgn2c76DfuHwAXfRrgS5qwfHU6Rhm8";Cesium::BingMapsImageryProvider *imageryProvider1 = new Cesium::BingMapsImageryProvider(url, key);viewer.imageryLayers()->addImageryProvider(imageryProvider1);//创建事件Cesium::ScreenSpaceEventHandler *_eventHandler = new Cesium::ScreenSpaceEventHandler(handler);_eventHandler->setInputAction(&Handler::mouseUp, Cesium::ScreenSpaceEventType::LEFT_CLICK);//设置鼠标点击事件viewer.startAnimating(true);//启动opengl循环system("pause");return 0;
}

返回目录 


http://www.ppmy.cn/news/775264.html

相关文章

互联网生活中的隐私保护:用隐私换便利还是花钱护隐私?

近日&#xff0c;某高校毕业生在校期间窃取学校内网数据&#xff0c;收集全校学生个人隐私信息的新闻引发了人们对互联网生活中个人信息安全问题的再度关注。在大数据时代&#xff0c;算法分发带来了隐私侵犯&#xff0c;在享受消费生活等便捷权利的同时&#xff0c;似乎又有不…

惠普HP1600加粉图解 (转载)

HP1600/2600/2605硒鼓加粉图解 转载于:https://www.cnblogs.com/xwf2160/archive/2009/08/04/1538137.html

深入理解java虚拟机精华总结:硬件的效率与一致性、Java内存模型、Java与线程、Java与协程

深入理解java虚拟机精华总结&#xff1a;硬件的效率与一致性、Java内存模型、Java与线程、Java与协程 硬件的效率与一致性Java内存模型主内存与工作内存内存间交互操作对于volatile型变量的特殊规则针对long和double型变量的特殊规则原子性、可见性与有序性原子性可见性有序性 …

Linux 简介

您的“关注”和“点赞”&#xff0c;是认可&#xff0c;是支持&#xff0c;是动力。 如意见相佐&#xff0c;可留言。 本人必将竭尽全力试图做到准确和全面&#xff0c;终其一生进行修改补充更新。 本文首发在IT羊资源网。 《IT羊资源网》&#xff0c;网址&#xff1a;https://…

Basic of Solidity (solidity基础)

目录 1.first contract 申明编译器版本 定义合约 合约构造函数 定义变量 定义函数 2.data type 值类型&#xff08;Value Types&#xff09; 引用类型&#xff08;Reference Types&#xff09; 映射类型&#xff08;Mapping Types&#xff09; Solidity是一种用于编写…

Win11或win10开机自启文件夹(备用)

C:\ProgramData\Microsoft\Windows\Start Menu\Programs\StartUp 有时候会用到自定义的开机自启的软件程序&#xff0c;把快捷方式放这里 实现开机自启

win10的开机启动目录(文件夹)位置

C:\Users\userName\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Startup &#xff08;指定用户&#xff0c;请换成自己的名字或去C:\Users查看相关目录&#xff09; C:\ProgramData\Microsoft\Windows\Start Menu\Programs\StartUp &#xff08;所有用户&#xff…

WIN10 开机自动启动文件夹路径

C:\ProgramData\Microsoft\Windows\Start Menu\Programs\StartUp