2017-10-19 120 views
0

我在尝试更正此问题时遇到问题。我创建了2个自定义Bing地图类型。用户可以通过自定义放置框更改地图类型。当用户从Default更改为Road时。大部分时间,如果用户变回默认值,道路将保持不变。我错过了那么明显的东西吗?我已经包含了我的代码。自定义必应地图类型问题

地图类型

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 } 
       } 

     }; 

下拉

<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> 

地图对象

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 
        }); 

回答

1

这是一个已知问题,即设置地图样式将新样式与旧样式合并,而不是完全覆盖它。该团队计划解决这个问题。同时,如果您处理当前地图并使用地图样式创建地图的新实例,则它将按预期工作。

+0

我不认为我能够做到这一点。这是为了将多个图层添加到地图的内部地图应用程序。处置地图会导致用户失去他们当前的数据,如果他们根据您的建议从一种地图类型切换到另一种 - 正确的? – bradoxbl

+0

正确,但是您可以跟踪哪些图层已打开,只需将它们添加到新地图实例即可。 – rbrundritt

+0

我确实试过这个,看看它是否会起作用。它确实如此。但是,对于我们所需要的,这不是100%真实的。现在,我们将暂时放弃这种选择,直到有可用的解决方案 – bradoxbl