【问题标题】:Using json style sheets in UWP MapControl with Aerial3D view在带有 Aerial3D 视图的 UWP MapControl 中使用 json 样式表
【发布时间】:2020-06-02 00:10:21
【问题描述】:

我在 Win 10 的 UWP MapControl 中绘制多边形。我看到您可以通过生成自定义样式表然后为元素分配样式来更改地图元素的外观。我找到了Map Style Sheet Editor 并创建了一个带有扩展样式的新样式表:

{
    "version": "1.*",
    "settings": {
    },
    "elements": {
    },
    "extensions": {
        "sxMapView": {
            "polyRemoveArea": {
                "fillColor": "#80FF0000", 
                "strokeColor": "#FFFF0000", 
                "strokeWidthScale": 5, 
                "visible": true
            },
            "polyProcessArea": {
                "strokeColor": "#FF00FFFF", 
                "strokeWidthScale": 5, 
                "visible": true
            },
            "ptRemoveArea": {
                "visible": true
            },
            "ptProcessArea": {
                "visible": true
            }
        }
    }
}

如果我关注this example 并在 2D 地图视图中分配“sxMapView.polyRemoveArea”,一切正常。

但是,如果我切换到 3D 地图视图:

myMapControl.Style = MapStyle.Aerial3D;

样式似乎被忽略了,并且使用了默认的蓝色(我通过不对多边形应用样式进行测试,并且填充了蓝色)。

此外,如果您在分配自定义样式表之前尝试将地图设置为 3D,则自定义样式表会将地图恢复为 2D 视图,即使没有描述该样式的样式。

myMapControl.Style = MapStyle.Aerial3D; // <- Set map to 3D
string styleSheetJson = "{...json style sheet from above ...}"
...
myMapControl.StyleSheet = MapStyleSheet.ParseFromJson(styleSheetJson); // <-  Map reverts to 2D

如何在地图控件样式表中定义地图元素的扩展样式并使用 Aerial3D 视图?

【问题讨论】:

    标签: c# uwp uwp-maps


    【解决方案1】:

    您需要使用 Combine 方法将您的样式添加到现有样式中,例如 Aerial3D。 设置样式将完全重置您之前设置的任何内容,这就是您的 JSON 覆盖 Aerial3D 的 set 调用的原因。

    MapStyleSheetEditor 中的示例代码应该向您展示如何执行此操作(小 i 按钮)

    myMap.StyleSheet = MapStyleSheet.Combine(new List<MapStyleSheet>
    {
        MapStyleSheet.AerialWithOverlay(),
        MapStyleSheet.ParseFromJson(jsonText)
    });
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-10-31
      • 2016-02-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多