I'd like to know how to create the following XML using SharpKml:
<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>
I've tried several things, but with no success. This is what I have so far:
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;
}
Who knows on how to achieve this?
Martijin added the answer to his own question, which is amazing and helped me get to my solution. Just for an alternative that I believe is slightly more generic I figured I'd drop my solution that I got to thanks to Martijin's answer.
Note: my solution is generating these for a line object to be generated, however this could be used for other styles easily
Creating the style objects for a highlight or normal state. The objects made here are what will be added to the stylemap
Here we just pass in the placemark itself (with some details such as the placemark name, etc., available) and a boolean value as to whether it is a highlight or normal style. My usage is thus:
Method:
Now we create the style selector to be added to the placemark object
Here I pass two style objects and the original placemark object to create the full style map. This is returned to the placemark with a call such as:
Method:
Why I have kmlDom, kmlBase, and kmlEngine in front of my object types
** My usings are as follows to separate sharpkml objects from my own internal objects