Google地球插件单击3D建筑物上的事件

时间:2011-08-11 21:53:56

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

我一直在环顾四周,但尚未找到答案。是否可以使用javascript为Google地球插件将点击事件添加到3D建筑图层或自定义3D模型。

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

理想情况下,人们可以使用3D建筑物层而不是手动加载模型,尽管我没有希望可以通过手动上传的3D模型来实现这一点。

我正在使用带有google earth utility library的google maps api V3来激活插件。

提前感谢您的任何答案。

1 个答案:

答案 0 :(得分:0)

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

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

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

google earth 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模型的一个稍微有用的解决方案可以是此issue中描述的使用其他“可发现的”不可见地标来检测点击的解决方案。

命中测试的代码excample

// EDIT2:

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

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

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