2015-12-14 75 views
1

我正嘗試使用Cesium Entities集合顯示多段線。我也使用entity.id查詢折線並隨後修改其位置。下面的代碼是基本的。該行不顯示,(不在地圖上呈現)。我想在Cesium Viewer中使用多段線創建一條直線箭頭。我正在使用Firefox 40.0

...... obj = JSON.parse(myMsg);

var cmd  = obj.NET[0].CMD; 
var eid  = obj.NET[0].ID;  // Entity ID 
var lat1  = obj.NET[0].LAT1  // Latitude1 
var lon1  = obj.NET[0].LON1; // Longitude1 
var alt1  = obj.NET[0].ALT1  // Altitude1 
var lat2  = obj.NET[0].LAT2  // Latitude2 
var lon2  = obj.NET[0].LON2  // Longitude2 
var alt2  = obj.NET[0].ALT2  // Altitude2 

var descr = obj.NET[0].DESC; // Description 

var myArry = [lon1, lat1, lon2, lat2]; 
var pos = Cesium.Cartesian3.fromDegreesArrayHeights(myArry); 

if (cmd === "NEW") { 
    viewer.entities.add({ 
     id : eid, 
     polyline : { 
      positions : pos, 
      width : 5, 
      followSurface : false, 
      material : Cesium.Color.BLUE, 
      show : true 
     }, 
     description : descr, 
    }); 

任何和所有幫助將不勝感激(我是新來的銫和也的Javascript)

回答

1

您需要在myArry高度值。

var myArry = [lon1, lat1, alt1, lon2, lat2, alt2]; 
var pos = Cesium.Cartesian3.fromDegreesArrayHeights(myArry); 

另外,如果你不想要的高度,你可以改變

Cesium.Cartesian3.fromDegreesArrayHeights(myArry) 

Cesium.Cartesian3.fromDegreesArray(myArry) 

舉一個例子,看到了Polyline demo

由於您是JavaScript新手,我還將添加:打開控制檯(大多數瀏覽器中的F12,控制檯選項卡)並查找錯誤。嘗試在viewer.entities.add塊的前面或後面添加console.log('Added an entity.');語句,以便可以查看代碼是否已執行。

還有一件事,你的問題的標題提到你想要一個箭頭。嘗試將您的material更改爲:

material : new Cesium.PolylineArrowMaterialProperty(Cesium.Color.BLUE) 
相關問題