我一直在四处寻找,但还没有找到答案。是否可以使用 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), ...
也许可以通过实现自定义交叉点“监听器”来做到这一点
//编辑:
也许这不是问题所在。更多的研究表明,有可能对某些几何体进行 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/