加载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 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完成的嵌入,但浏览器兼容性有问题。
<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>
事件函数中调用:
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 包