2017-10-19 3 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