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);
        
    } 

 

效果图示意如下:

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章