c# - 如何使用 SharpKml 创建 StyleMap 标签?

标签 c# kml sharpkml

我想知道如何使用 SharpKml 创建以下 XML:

<StyleMap id="msn_placemark_circle">
    <Pair>
        <key>normal</key>
        <styleUrl>#sn_placemark_circle</styleUrl>
    </Pair>
    <Pair>
        <key>highlight</key>
        <styleUrl>#sh_placemark_circle_highlight</styleUrl>
    </Pair>
</StyleMap>

我试过很多东西,但都没有成功。这是我目前所拥有的:

public static StyleSelector Generate_M_ylw_pushpin3()
{
    var stylemap = new StyleMapCollection();
    stylemap.Id = "s_ylw-pushpin3";
    var normalPair = new Pair();
    normalPair.Id = "normal";
    normalPair.Selector = StyleGenerator.Generate_s_ylw_pushpin_hl3();
    //normalPair.StyleUrl = new Uri(#sh_placemark_circle_highlight); // Exception by .NET

    var highlightPair = new Pair();
    highlightPair.Id = "highlight";
    highlightPair.Selector = StyleGenerator.Generate_s_ylw_pushpin_hl3();
    //highlightPair.StyleUrl = new Uri(#sh_placemark_circle_highlight); // Exception by .NET

    stylemap.Add(normalPair);
    stylemap.Add(highlightPair);

    return stylemap;
}

// This code just works fine
public static StyleSelector Generate_s_ylw_pushpin_hl3()
{
    var style = new Style();
    style.Id = "s_ylw-pushpin_hl3";
    var iconStyle = new IconStyle();
    iconStyle.Color = Color32.Parse("ff00ff00");
    iconStyle.Scale = 1.18182;
    iconStyle.Icon = new IconStyle.IconLink(new Uri("http://some/url"));
    var labelStyle = new LabelStyle();
    labelStyle.Color = Color32.Parse("00ffffff");

    style.Icon = iconStyle;
    style.Label = labelStyle;

    return style;
}

谁知道如何实现这个?

最佳答案

我找到了我自己问题的答案:

public static StyleSelector Generate_M_ylw_pushpin3()
{
    var stylemap = new StyleMapCollection();
    stylemap.Id = "s_ylw-pushpin3";
    var normalPair = new Pair();
    normalPair.StyleUrl = new Uri("#sh_placemark_circle", UriKind.Relative); 
    normalPair.State = StyleState.Normal;

    var highlightPair = new Pair();
    highlightPair.StyleUrl = new Uri("#sh_placemark_circle_highlight", UriKind.Relative); 
    highlightPair.State = StyleState.Highlight;

    stylemap.Add(normalPair);
    stylemap.Add(highlightPair);

    return stylemap;
}

关于c# - 如何使用 SharpKml 创建 StyleMap 标签?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28544080/

相关文章:

C# 通用列表 foreach OutofMemoryException

c# - 在 C# 中删除 flowlayoutpanel 中的所有控件

java - 使用 JAK kml 库编码时如何保持字符串格式

kml - 在 GE 中打开 KMZ 时设置初始 View

python - 从另一个写入 KML 文件

ios - 扩展 iOS KMLViewer 示例以处理 KML NetworkLink 元素

java - 有没有办法在java中模拟属性选择器?

c# - Resharper 转换 LINQ 错误?还是我的代码错了

c# - 如何使用 SqlCommand 将多个 T-SQL 语句(由 GO 分隔)链接到对 SQL 的单个调用中