2017-10-19 7 views
0

J'ai un problème en essayant de corriger cela. J'ai créé 2 types de cartes Bing personnalisés. L'utilisateur peut changer le type de carte à l'aide d'une boîte de dépôt personnalisée. Lorsque l'utilisateur passe de Default à Road. La majorité du temps si l'utilisateur revient à Default, les routes restent. Ai-je manqué quelque chose d'aussi évident? J'ai inclus mon code.Bing personnalisé Type de carte Problème

Carte Types

var defaultMapColors = 
     { 
      "version": "1.0", 
      "settings": 
       { 
        "landColor": "#686868" 
       }, 
      "elements": 
       { 
        "mapElement": { "labelVisible": false }, 
        "area": { "visible": false }, 
        "transportation": { "visible": false }, 
        "countryRegion": {       //country 
         "borderStrokeColor": "#444444", 
         "borderOutlineColor": "#00000000", 
         "borderWidthScale": 3, 
         "fillColor": "#888888", 
         "visible": true 
        }, 
        "adminDistrict": {       //states 
         "borderVisible": true, 
         "borderStrokeColor": "#444444", 
         "borderOutlineColor": "#00000000", 
         "borderWidthScale": 3, 
         "fillColor": "#888888", 
        }, 
        "water": { "fillColor": "#4E5E6D" }, 
        "point": { "visible": false } 
       } 
     }; 

    var defaultMapColorsWithRoads = 
     { 
      "version": "1.0", 
      "settings": 
       { 
        "landColor": "#686868" 
       }, 
      "elements": 
       { 
        "mapElement": { "labelVisible": false }, 
        "area": { "visible": false }, 
        "transportation": { 
         "visible": true, 
         "strokeColor": "#ffffff", 
        }, 
        "countryRegion": {       //country 
         "borderStrokeColor": "#444444", 
         "borderOutlineColor": "#00000000", 
         "borderWidthScale": 3, 
         "fillColor": "#888888", 
         "visible": true 
        }, 
        "adminDistrict": {       //states 
         "borderVisible": true, 
         "borderStrokeColor": "#444444", 
         "borderOutlineColor": "#00000000", 
         "borderWidthScale": 3, 
         "fillColor": "#888888", 
        }, 
        "water": { "fillColor": "#4E5E6D" }, 
        "point": { "visible": false } 
       } 

     }; 

Drop Down

<div class="form-group"> 
     <select id="customNavSelector" class="form-control selectpicker show-tick"> 
      <option value="Default" onclick="map.setView({ mapTypeId: Microsoft.Maps.MapTypeId.road, customMapStyle: defaultMapColors });">Default</option> 
      <option value="Road" onclick="map.setView({ mapTypeId: Microsoft.Maps.MapTypeId.road, customMapStyle: defaultMapColorsWithRoads });">Road</option> 
      <option value="Aerial" onclick="map.setView({ mapTypeId: Microsoft.Maps.MapTypeId.aerial, customMapStyle: '' });">Aerial</option> 
     </select> 
    </div> 

Carte Objet

map = new Microsoft.Maps.Map(mapDiv, 
        { 
         credentials: "@ViewBag.BingMapKey", 
         center: new Microsoft.Maps.Location(@ConfigurationManager.AppSettings["CenterLatitude"], @ConfigurationManager.AppSettings["CenterLongitude"]), 
         customMapStyle: defaultMapColors, 
         mapTypeId: Microsoft.Maps.MapTypeId.road, //grayscale, aerial, road, canvasLight, canvasDark 
         //liteMode: true, 
         showMapTypeSelector: false, //set to true to show default bing map selector 
         disableStreetside: false, 
         disableStreetsideAutoCoverage: true, 
         zoom: zoom, 
         backgroundColor: 'black', 
         //showBreadcrumb: true, 
         //showLocateMeButton: locator, 
         enableInertia: false, 
         enableClickableLogo: false, 
         navigationBarMode: Microsoft.Maps.NavigationBarMode.compact  //compact, default, minified 
        }); 

Répondre

1

Il y a un problème connu réglage de la Le style de carte fusionne le nouveau style avec le style ancien au lieu de l'écraser complètement. L'équipe prévoit de résoudre ce problème. En attendant, si vous disposez de la carte actuelle et créez une nouvelle instance de la carte avec le style de carte, elle fonctionnera comme prévu.

+0

Je ne pense pas que je suis capable de faire cela. ceci est pour une application de carte interne avec plusieurs couches ajoutées à la carte. la disposition de la carte entraînerait la perte de données actuelles de l'utilisateur s'il passait d'un type de carte à l'autre en fonction de votre suggestion - correct? – bradoxbl

+0

Correct, cependant vous pouvez suivre les couches qui sont activées et les ajouter simplement à la nouvelle instance de la carte. – rbrundritt

+0

J'ai essayé ceci juste pour voir si cela fonctionnerait. Cela fait. Cependant, pour ce dont nous avons besoin, ce n'est pas 100% réaliste. Pour l'instant, nous allons renoncer à la sélection de la route pour l'instant jusqu'à ce qu'une solution soit disponible – bradoxbl