4

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

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

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

我正在使用带有google earth 实用程序库的 google maps api V3来激活插件。

提前感谢您的任何答案。

4

1 回答 1

0

我想我第一次读过这个。仔细观察后发现它似乎仍然不可能(以那种简单的方式)

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

...鼠标事件可以附加到插件中的大多数几何图形(3D模型除外),...

谷歌地球API

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

//编辑:

也许那不是洞的故事。更多的研究表明,可以针对某些几何形状进行最热门的测试。有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

所以你可以对建筑物进行测试,但不能对自定义 3D 模型进行测试......

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

hittesting的小代码示例

//编辑2:

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

为多边形可以接收点击事件的每个“点击事件接收自定义 3d 模型”创建一个带有多边形的边界框

google.earth.addEventListener(polygonPlacemark, 'click', function(event) {
    alert('placemark bounding box clicked');
});
于 2011-08-17T14:56:38.853 回答