我一直在环顾四周,但尚未找到答案。是否可以使用javascript为Google地球插件将点击事件添加到3D建筑图层或自定义3D模型。
我的最终目标是让用户选择一个3d建筑,并显示一个信息气泡,其中包含有关该建筑的详细信息。这不是Google使用有关3D模型的信息显示的默认气泡。
理想情况下,人们可以使用3D建筑物层而不是手动加载模型,尽管我没有希望可以通过手动上传的3D模型来实现这一点。
我正在使用带有google earth utility library的google maps api V3来激活插件。
提前感谢您的任何答案。
答案 0 :(得分:0)
我想我第一次就读过这个。经过仔细研究后发现它似乎仍然不可能(以这种简单的方式)
google.earth.addEventListener(placemark, 'click', function(event)
{
alert('click');
});
...鼠标事件可以附加到插件中的大多数几何图形(3D模型除外),...
也许可以通过实现自定义交集'侦听器'来实现这一点
//编辑:
也许那不是故事的故事。更多的研究表明,有可能对某些几何形状进行最热门的测试。 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');
});