google earth开发

google Earth api 参考

加载google earth: 使用createInstance,加载到div中

创建地标: 使用 createPlacemark(  ); 并给Placemark 赋值 name和经纬度

创建提示框: 特征气泡,文字气泡,DIV气泡。支持html格式

控制游览视角:用LookAt对象来指定Google Earth察看点、察看距离 及角度。

创建路径:由“lineString”对象创建,可以通过定义一串连续的线段来 创建弯折路径。可以通过指定颜色和宽度修改路径样式

创建多边形,并修改多边形的样式

使用在线地标: 图标文件、地面叠加图、屏幕叠加图。  模型(SketchUp文件尤佳)。 KML或KMZ文件。
管理事件:事件由Google Earthvent命名空间里的函数来控制 的。每一个Google Earth API对象都对应若干事件。例如,“KmlPlacemark”对象 有“Click”(单击),“dblclick”(双击),“move”(移动)等事件。

地面覆盖:允许您在Google Earth的地表上放置图像,并与地形紧贴。

屏幕覆盖:图片固定在屏幕上,不像地面覆盖那样跟随地表起伏而变化。屏幕覆盖通常用来做logo、商标、图例等,

样式地图

   样式地图在一般情况为地标下提供两种状态:普通状态和高亮状态,分别由两种图标来表示,当用户在Google Earth中用鼠标在地标图案上经过时,图案会自动切换至高亮状态。

KML分析:

      用Google Earth.parseKml对象把KML转换成JavaScript

      EarthtFeatures().appendChild(pentagon); 实现加载

察看模型

      Google Earth插件支持立体模型(三维场景)。把三维模型导入Google Earth后,会自动转换格式、旋转角度、伸缩大小,以适应Google Earth的坐标系统。

      创建model,并设置model的link为dae文件,location

察看太空

您可以创建程序来观察天空——星星、月亮、星座、星系……就像Google Earth里的Sky功能一样。当程序切换到天空模式时,界面也会自动切换。所有星空数据均被放置在虚拟圆形地球的内部,我们的视角切换到球形核心,抬头仰望便可一览苍穹。

为google Map 加入earth功能

     如果您是一位Google Maps开发者,想把网络地图移植到Google Earth插件里以增强互动效果,现在变得轻而易举。Google Maps API为Gmap2类增加了一个新方法,为Gmap类型增加了一个新常量,允许你在已有的网络地图中增加Google Earth三维功能。
    api 没找到,还需要参考

参考:

      http://www.godeyes.cn/html/2008/07/04/google_earth_1933.html

      http://www.godeyes.cn/html/2008/07/07/google_earth_1939.html

具体实例

      如果是在js中,嵌入google Eartth还是很容易的一件事,但在Flex要嵌入Google Earth就有点问题,因为Google Earth没有flex版本,我是使用 iFrame完成的嵌入,但浏览器兼容性有问题。

在index.template.html中加入关于google earth的js代码
<script src="http://www.google.com/jsapi?key=ABQIAAAA0AL-b41DvVq2yvYvsRu7iBS6glKO5KosklBAFr7TsZQ44P67KRSSSK4Hpom4eiDg8KAXCYMqUthMFw"> </script>
<script type="text/javascript">
google.load("earth", "1");
google.load("maps", "2.99");  // For JS geocoder
 
var ge = null;
var geocoder;
var _position = [0,0,0,0];
 
function init() {
  google.earth.createInstance("map3d", initCB, failureCB);
}
 
function initCB(object) {
  ge = object;
  ge.getWindow().setVisibility(true);
  moveGmap( _position[0], _position[1], _position[2], _position[3] );  
  ge.getNavigationControl().setVisibility(ge.VISIBILITY_AUTO);
  ge.getLayerRoot().enableLayerById(ge.LAYER_BORDERS, true);
  ge.getLayerRoot().enableLayerById(ge.LAYER_BUILDINGS, true);
  ge.getLayerRoot().enableLayerById(ge.LAYER_ROADS, true);
 
  //Set the FlyTo speed
  ge.getOptions().setFlyToSpeed(0.3);
}
 
function failureCB(object) {
  alert('load failed');
}
//为了放入flex窗口中相应位置
function moveGmap(x,y,w,h) {
    _position = [x,y,w,h];
    var frameRef=document.getElementById("map3d_container");
    frameRef.style.left=x;
    frameRef.style.top=y;
    frameRef.width=w;
    frameRef.height=h;
    frameRef.style.width=w;
    frameRef.style.height=h;
}
 //解析地址得到经纬度
function submitLocation( address ) {
  geocoder.getLatLng(
    address, 
    function(point) {
      if (point && ge != null) {
        var la = ge.createLookAt('');     
        la.set(point.y, point.x, 100, ge.ALTITUDE_RELATIVE_TO_GROUND, 
               0, 0, 4000);
        ge.getView().setAbstractView(la);
      }
    }
  );
}
<div id='map3d_container' style="position:absolute;background-color:transparent;border:0px;">
    <div id='map3d' style=''></div>
</div>
当点击鼠标时,在地图上加载相应的KML文件

事件函数中调用:

ExternalInterface.call( "placeBuildingByNetworkLink", selectNode.@file+"");
 JS代码:
function placeBuildingByNetworkLink(file) {
    var link = ge.createLink(''); 
    var href = 'resource/'+file;  //对应的KMZ文件 
    link.setHref(href); 
    var networkLink = ge.createNetworkLink(''); 
    networkLink.set(link, true, true); 
    // Sets the link, refreshVisibility, and flyToView  
    ge.getFeatures().appendChild(networkLink); 
}

iframe 包

你可能感兴趣的:(object,iframe,api,function,Google,Flex)