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
});
나는 이것을 할 수 있다고 생각하지 않는다. 이는지도에 여러 레이어가 추가 된 내부지도 응용 프로그램을위한 것입니다. 지도를 삭제하면 귀하의 제안에 따라지도 유형을 다른지도 유형으로 전환 한 사용자가 현재 데이터를 잃게됩니다. – bradoxbl
올바른데, 어떤 레이어가 켜져 있는지를 추적 할 수 있습니다. 단순히 새 맵 인스턴스에 레이어를 추가하십시오. – rbrundritt
작동 여부를 확인하기 위해이 작업을 시도했습니다. 그렇습니다. 그러나 우리가 필요로하는 것은 100 % 현실적인 것이 아닙니다. 현재로서는, 우리는 수정이 가능할 때까지 도로 선택을 포기할 것입니다. – bradoxbl