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

 

效果圖示意如下:

 

 

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