holes from BING tiles on the poles from local tilecache

My situation :

  1. I get BING tiles with MAPPROXY with this url:http://ak.t1.tiles.virtualearth.net/tiles/a%(quadkey)s.png?g=5171&n=z

  2. I serve the MAPPROXY tile with Geoserver tilecache to Cesium as a tiled WMS layer

  3. I put the WMS layer in Cesium with this code:

baselayer = new Cesium.WebMapServiceImageryProvider({

url: 'http://localhost:8888/geoserver/YE/gwc/service/wms?’,

layers: ‘YE:BING’,

parameters: parameters,

terrainProvider: new Cesium.CesiumTerrainProvider({

url: ‘//assets.agi.com/stk-terrain/world


enablePickFeatures: true,

tileWidth: 256,

tileHeight: 256,

credit: ‘WMS’




//define the viewer for Cesium

var viewer = new Cesium.Viewer(‘cesiumContainer’, {

imageryProvider: baselayer,

geocoder: true,

animation: false,

homeButton: false,

infoBox: false,

timeline: false,

fullscreenButton: true,

baseLayerPicker: false,

mapProjection: new Cesium.WebMercatorProjection()


I get holes on the poles in Cesium. I did get the boundingbox in Geoserver from the MAPPROXY layer. It’s the 85.xxx / -85.xxx boundingbox.


How do I get the BING tiles server over the poles?

The way I solve this was using an own base layer, then including the BING layers. That will cover the poles holes with my map tiles:
//Create my own TileMapServiceImageryProvider
var MyImageryProvider = new Cesium.TileMapServiceImageryProvider(
      url : 'your_url_to your_tiles',
      fileExtension : 'jpg'
var viewer = new Cesium.Viewer("map3d", {
  animation : false,
  baseLayerPicker : false,
  fullscreenButton : false,
  homeButton : true,
  infoBox : true,
  sceneModePicker : true,
  selectionIndicator : false,
  timeline : false,
  navigationHelpButton : true,
  scene3DOnly : false,
  targetFrameRate : 24,
  geocoder : true,
  imageryProvider : MyImageryProvider //Here is my TileMapServiceImageryProvider

var baseLayer = viewer.imageryLayers
    .addImageryProvider(new Cesium.BingMapsImageryProvider(
          url : '//dev.virtualearth.net',
          key : 'AoRYmPYmoZ9otffHMXaCrL6ms5QXpCsZ4oY2zrMXKs6Bjip_NnGpYUTSLeRGD9QE',
          mapStyle : Cesium.BingMapsStyle.AERIAL
baseLayer.name = "LAYER_BASE";
baseLayer.type = "BING-BASE";
baseLayer.show = true;

var roadLayer = viewer.imageryLayers
    .addImageryProvider(new Cesium.BingMapsImageryProvider(
          url : '//dev.virtualearth.net',
          key : 'AoRYmPYmoZ9otffHMXaCrL6ms5QXpCsZ4oY2zrMXKs6Bjip_NnGpYUTSLeRGD9QE',
          mapStyle : Cesium.BingMapsStyle.AERIAL_WITH_LABELS
roadLayer.name = "LAYER_ROADS";
roadLayer.type = "BING-ROAD";
roadLayer.show = true;

Hope this helps.