2016-05-28 3 views
2

私のコードでは、デフォルトのベースマップをmapbox.streetsに変更しています。しかし、baseLayerPickerウィジェットからベースレイヤーを更新することはもうありません。ベースマップセレクタが機能しません

   var viewer = new Cesium.Viewer('cesiumContainer',{ 
       animation : false, 
       homeButton : false, 
       baseLayerPicker : true, 
       infoBox : true, 
       sceneModePicker : true, 
       timeline : false, 
       navigationInstructionsInitiallyVisible : false, 
       navigationHelpButton : false, 
       contextOptions: { 
        webgl:{preserveDrawingBuffer:true} 
       }, 
       selectionIndicator : false, 
      }); 
      var layers = viewer.imageryLayers; 
      var baseLayer = layers.get(0); 
      layers.remove(baseLayer); 
      layers.addImageryProvider(new Cesium.MapboxImageryProvider({ 
       url : 'https://api.mapbox.com/v4/', 
       mapId: 'mapbox.streets', 
      })); 

何か不足していますか?どんな助けも大歓迎です。

答えて

2

投稿したコードでは、ビューア(したがってbaseLayerPicker)が既に構築された後に画像レイヤーを交換しています。あなたがしなければならないことは、baseLayerPickerが適切なオプションを前にして構築されていることを確認して、目的のベースレイヤーをあらかじめ選択することです。コードは次のようになります。これを実行すると、あなたはbaseLayerPickerがすでに選択された正しい項目で始まり、さらに他のベース層にスワップアウトするオプションを提供しています

var imageryProviders = Cesium.createDefaultImageryProviderViewModels(); 
var selectedImageryProviderIndex = 4; // MapBox Street is 5th in the list. 

var viewer = new Cesium.Viewer('cesiumContainer', { 
    imageryProviderViewModels: imageryProviders, 
    selectedImageryProviderViewModel: imageryProviders[selectedImageryProviderIndex] 
}); 

+0

ありがとうございました。しかし、ページロード時にデフォルトのカメラビューがロードされることはありません。これは壊れているようです。 : – meen

+0

申し訳ありませんが、それは私の間違いでした。あなたの解決策は働いています:) – meen

+0

それを聞いてうれしい! – emackey

関連する問題