gpt4 book ai didi

javascript - 3D 建筑物上的 Google 地球插件点击事件

转载 作者:塔克拉玛干 更新时间:2023-11-02 21:47:02 25 4
gpt4 key购买 nike

我一直在四处寻找,但还没有找到答案。是否可以使用 google earth 插件的 javascript 将点击事件添加到 3D 建筑层或自定义 3D 模型。

我的最终目标是能够让用户选择一个 3d 建筑并显示一个信息气泡,其中包含有关该建筑的详细信息。这不是 Google 显示的带有 3D 模型信息的默认气泡。

理想情况下,人们可以使用 3D 建筑图层而不是手动加载模型,尽管我对此不抱太大希望,所以通过手动上传 3D 模型来实现是有可能的。

我将 google maps api V3 与 google earth utility library 一起使用激活插件。

提前感谢您的回答。

最佳答案

我想我第一次看多了。仔细观察后发现似乎仍然不可能(以那种简单的方式)

google.earth.addEventListener(placemark, 'click', function(event) 
{
alert('click');
});

... Mouse events can be attached to most geometries in the plugin (the exception is 3D models), ...

google earth api

也许可以通过实现自定义交叉点“监听器”来做到这一点

//编辑:

也许这不是问题所在。更多的研究表明,有可能对某些几何体进行 HitTest 。 ge 接口(interface) 有一个名为hitTest(...) 的函数 api doc

GEHitTestResult GEView.hitTest( float               x,
KmlUnitsEnum xUnits,
float y,
KmlUnitsEnum yUnits,
GEHitTestModeEnum mode
)

不幸的是 GEHitTestModeEnum 只适用于 GEPlugin.HIT_TEST_GLOBE GEPlugin.HIT_TEST_TERRAIN
GEPlugin.HIT_TEST_BUILDINGS

因此您可以针对建筑物进行 hitTest,但不能针对自定义 3D 模型...

单击自定义 3D 模型的一种稍微可用的解决方案可能是此 issue 中描述的解决方案使用其他“可事件”不可见地标来检测点击。

小代码excample HitTest

//编辑2:

我在当前项目中使用的解决方案听起来是这样的:

polygons 创建边界框对于每个“接收自定义 3d 模型的点击事件”多边形可以接收点击事件

google.earth.addEventListener(polygonPlacemark, 'click', function(event) {
alert('placemark bounding box clicked');
});

关于javascript - 3D 建筑物上的 Google 地球插件点击事件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7033369/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com