2017-01-26 12 views
0

bing maps v8では、どのようにAnimatedTileLayerで不透明度を設定できますか?下に設定した不透明度値(0.2)は機能しません。Bing maps - アニメーションタイルレイヤー - 不透明度

var tileSources = []; 
     for (var i = 0; i < timeStamps.length; i++) { 
      var path = 'https://api.weather.com/v3/TileServer/tile/radarFcst?fts={fts}&ts={ts}&xyz={x}:{y}:{zoom}&apiKey={apiKey}'; 
      path = path.replace('{apiKey}', weatherApiKey); 
      path = path.replace('{fts}', timeStamps[i]); 
      path = path.replace('{ts}', tsNow); 
      var tileSource = new Microsoft.Maps.TileSource({ 
       uriConstructor: path 
      }); 
      tileSources.push(tileSource); 
     } 

     EmptyOverlay.prototype = new Microsoft.Maps.CustomOverlay(); 
     function EmptyOverlay() { 
     } 
     EmptyOverlay.prototype.onAdd = function() { 
      var container = document.createElement('div'); 
      this.setHtmlElement(container); 
     }; 
     var overlay = new EmptyOverlay(); 
     vm.map.layers.insert(overlay); 
     var animatedLayer = new Microsoft.Maps.AnimatedTileLayer({ 
      mercator: tileSources, 
      frameRate: 500, 
      opacity: 0.2, 
      loadingScreen: overlay 
     }); 
     vm.map.layers.insert(animatedLayer); 

答えて

0

AnimatedTileLayerは不透明オプションを持っていない:https://msdn.microsoft.com/en-us/library/mt772207.aspx私は機能要求としてこれを追加します。

あなたがこれを行うために使用することができハックがあり、この正しい方法が必要な場合:

var opacity = 0.2; 

//Add an event handler that fires for each frame of the animation. 
Microsoft.Maps.Events.addHandler(animatedLayer, 'onFrameLoaded', function (e) { 
    //Check the opacity of the root html element used by the animated tile layer if it is not set to the current opacity. 
    if (animatedLayer._htmlElement && animatedLayer._htmlElement.style.opacity !== opacity) { 
     animatedLayer._htmlElement.style.opacity = opacity; 
    } 
}); 

注意、これはハックされ、正式にサポートされていないので、それはいつでも破ることができる、とありますプロダクションアプリでの使用はお勧めしません。