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

标签 javascript 3d google-earth google-earth-plugin

我一直在四处寻找,但还没有找到答案。是否可以使用 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/

相关文章:

javascript - Google Analytics - 显示功能是否会随事件命中而发送?

javascript - 适用于 Alexa Javascript 的 AWS Lambda 函数中的 MQTT

printing - 3D 打印固有的不可定向表面

html - "3D Meninas"是如何工作的(CSS/动画)?

css - 如何在 css 中构建 3d 室内 View ?

java - 如何维护与 Google 地球客户端的 session 状态?

javascript - 为 React/Webpack 动态需要图像或者许多 require(img) 的成本是多少

javascript生成50个不重复的随机数

python - 解析 JSON 数据时出错

python - 使用 Python 和 PyKML 修改 map 层