google earth开发(五) 两点之间画线(显示地球曲线)
earth API支持两点之间画线,线的颜色可以改变,但不支持虚线。另支持:
--粗细修改
--支持海拔
线段通过设置显示海拔相对位置,就能随着地球旋转、放大缩小而显示不同的地球曲线。
(1)创建线段
var lineMark = ge.createPlacemark('');
var lineString = ge.createLineString('');
lineMark.setGeometry(lineString);
(2)设置线段类型
lineString.setAltitudeMode(ge.ALTITUDE_RELATIVE_TO_GROUND); //显示海拔相对位置
(3)设置海拔信息
两点之间线段分成均匀的20段,共21个点,不同点海拔不同。
addPointsToLineString(lineString,latitude1,
langitude1, latitude2, langitude2,20); //输入2端点经纬度
(4) 设置线段颜色和粗细
lineMark.setStyleSelector(ge.createStyle(''));
var lineStyle =
lineMark.getStyleSelector().getLineStyle();
lineStyle.setWidth(2); //粗细
lineStyle.getColor().set('9900ffff'); //颜色
(5)把线段加入到地球
ge.getFeatures().appendChild(lineMark );
附:增加21个点(含纬度)的函数(输入参数:steps=20)
function addPointsToLineString(lineString,lat1,lang1,lat2,lang2,steps){
var i;
var lat;
var lang;
var height;
for(i=0;i<steps;i++)
{
lat = lat1+ i*(lat2-lat1)/steps;
lang = lang1+ i*(lang2-lang1)/steps;
if (i==0)
height = 0;
else if(i==1 || i==steps-1)
height = 8130.76624025246;
else if(i==2 || i==steps-2)
height = 15640.4403479026;
else if(i==3 || i==steps-3)
height = 22453.9881416349;
else if(i==4 || i==steps-4)
height =28503.3309041539;
else if(i==5 || i==steps-5)
height = 33728.0256022233;
else if(i==6 || i==steps-6)
height = 38075.8688134745;
else if(i==7 || i==steps-7)
height = 41503.4183257466;
else if(i==8 || i==steps-8)
height = 43976.4271973102;
else if(i==9 || i==steps-9)
height = 45470.1859409886 ;
else if(i==10)
height = 45969.769413186;
lineString.getCoordinates().pushLatLngAlt(lat,lang, height);
}
lineString.getCoordinates().pushLatLngAlt(lat2,lang2, 0);
}
效果图示意如下: