1

我有一个服务器正在提供一个 xhtml 页面,其中包含我想要在我的谷歌地球(或 worldwind)气球中显示的所有内容。我希望地标气球在地图上单击时获取 html 页面。为简单起见,当您从地图上单击它时,我希望我的气球是 www.yahoo.com。

任何在线搜索都会将我发送到可以连接到 google earth api 的 java 代码。我真的希望有一种客户端 kml 方式来做到这一点。我可以使用扩展数据标签或描述标签来使其工作吗?我什至尝试使用 embed 标签,该标签非常适合您的视频,但没有用于 html 页面的插件。任何帮助深表感谢。

这也有效,但 iframe 非常难看 -

<Placemark> 
  <name>Test Placemark</name> 
    <description> 
      <![CDATA[ 
        <iframe src="http://www.yahoo.com" frameborder="0" 
           scrolling="auto" height="500" width="600"></iframe> 
      ]]> 
    </description> 
...
4

1 回答 1

0

你可以试试 getBalloonHtmlUnsafe() 和 HtmlDivBalloon 吗? https://developers.google.com/earth/documentation/balloons#getballoonhtmlunsafe

但是,您将 kml 添加到页面,然后您可以将点击功能绑定到这些地标。

google.earth.fetchKml(ge, url, function(kmlObject){
   if(kmlObject){
      ge.getFeatures().appendChild(kmlObject);

      if(kmlObject.getType() === 'KmlPlacemark'){
          google.earth.addEventListener(kmlObject, 'click', function(event){
               event.preventDefault();

               var balloon = ge.createHtmlDivBalloon('');
               var content = kmlObject.getBalloonHtmlUnsafe();
               balloon.setFeature(kmlObject);
               var div = document.createElement('div');
               div.innerHTML = content;
               balloon.setContentDiv(div);

               ge.setBalloon(balloon);
          });
      }
   }
});

如果这仍然不起作用,请记住谷歌地球会清除大量气球数据,因此您可以尝试使用 jquery 注入 html。

var balloon = ge.createHtmlDivBalloon('');
var content = kmlObject.getBalloonHtmlUnsafe();
balloon.setFeature(kmlObject);
var div = document.createElement('div');
balloon.setContentDiv(div);

ge.setBalloon(balloon);
$(div).html(content);
于 2012-07-27T20:44:33.123 回答