ThinkGeo.com    |     Documentation    |     Premium Support

Bing Zoom Levels

Hi, Support I was wondering if there was a way to add zoom levels onto Bing maps. We have successfully dont it to goolge maps but i was wondering if it was possible with bing i tried to convert the code to use the bing map instead of googles but with no luck 



Client Side 


function OnOverlaysDrawing(layers) {
 
    for (var index = 0; index < layers.length; index++) {
        var templayer layers[index];
        if (OpenLayers.String.contains(templayer.CLASS_NAME, ‘Bing Map’))
        //if (OpenLayers.String.contains(templayer.CLASS_NAME.indexOf(‘Bing’) > 0))
        {
            templayer.options.numZoomLevels = 0;
            templayer.options.maxZoomLevels = 20;
 
            templayer.MIN_ZOOM_LEVEL = 0;
            templayer.MAX_ZOOM_LEVEL = 20;
            templayer.RESOLUTIONS.push(templayer.RESOLUTIONS[19] / 2);
            templayer.RESOLUTIONS.push(templayer.RESOLUTIONS[20] / 2);
        }
    }
}

Server Side


private ZoomLevelSet CustomZoomlevelSets()
       {
           ZoomLevelSet myZoomlevelset = new ZoomLevelSet();
            
           BingMapsZoomLevelSet bingzoomlevelsets = new BingMapsZoomLevelSet();
           foreach (ZoomLevel item in bingzoomlevelsets.GetZoomLevels())
           {
               myZoomlevelset.CustomZoomLevels.Add(item);
           }
 
           ZoomLevel zoomlevel19 = new ZoomLevel(myZoomlevelset.GetZoomLevels()[myZoomlevelset.GetZoomLevels().Count - 1].Scale / 2);
           myZoomlevelset.CustomZoomLevels.Add(zoomlevel19);
           ZoomLevel zoomlevel20 = new ZoomLevel(myZoomlevelset.GetZoomLevels()[myZoomlevelset.GetZoomLevels().Count - 1].Scale / 2);
           myZoomlevelset.CustomZoomLevels.Add(zoomlevel20);
        
 
           return myZoomlevelset;
       }


Hi Gordon, 
  
 Sorry I think for MVC we cannot implemente that. 
  
 This function require server support, if Google can implement that, I think that’s because google support return any scale tile, if we want move that to Bing, we need Bing support custom zoom level. 
  
 Regards, 
  
 Don

Hi
Gordon,



There
are some difference between client side code of Google maps and Bing maps.
Would you please try codes below and see if it works?


<script type="text/javascript">
    function OnOverlaysDrawing(layers) {
        for (var index = 0; index < layers.length; index++) {
            var templayer layers[index];
            if (templayer.CLASS_NAME.indexOf('Bing') > 0) {
                templayer.options.numZoomLevels = 24;
                templayer.resolutions.push(templayer.resolutions[19] / 2);
                templayer.resolutions.push(templayer.resolutions[20] / 2);
                templayer.resolutions.push(templayer.resolutions[21] / 2);
                templayer.resolutions.push(templayer.resolutions[22] / 2);
            }
        }


private ZoomLevelSet CustomZoomlevelSet()
        {
            ZoomLevelSet myZoomlevelset = new ZoomLevelSet();
 
            BingMapsZoomLevelSet googlezoomlevelsets = new BingMapsZoomLevelSet();
            foreach (ZoomLevel item in googlezoomlevelsets.GetZoomLevels())
            {
                myZoomlevelset.CustomZoomLevels.Add(item);
            }
 
            ZoomLevel zoomlevel21 = new ZoomLevel(myZoomlevelset.GetZoomLevels()[myZoomlevelset.GetZoomLevels().Count - 1].Scale / 2);
            ZoomLevel zoomlevel22 = new ZoomLevel(zoomlevel21.Scale / 2);
            ZoomLevel zoomlevel23 = new ZoomLevel(zoomlevel22.Scale / 2);
            ZoomLevel zoomlevel24 = new ZoomLevel(zoomlevel23.Scale / 2);
            myZoomlevelset.CustomZoomLevels.Add(zoomlevel21);
            myZoomlevelset.CustomZoomLevels.Add(zoomlevel22);
            myZoomlevelset.CustomZoomLevels.Add(zoomlevel23);
            myZoomlevelset.CustomZoomLevels.Add(zoomlevel24);
 
            return myZoomlevelset;
        }

Thanks,

Troy



this works but the bing map shows an error when zooming past zoom level 19 , is there a way to fix this ?



Hi Gordon, 
  
 Image likes this means Bing Maps has not map data here. This usually occurs when the map extent is in ocean and zoom level is pretty deep. The land area of zoom level 19 should be OK. 
  
 BTW, we can try Google maps, those ocean area will also be rendered out.  
  
 Any question please feel free to let us know. 
  
 Thanks