2

使用 VB (VS2010) 中的 SharpKML 库,我可以为每个地标创建带有自定义图标的 kml 文件。地标是在循环中创建的,我想为每个地标设置图标的标题属性。

'Define the style for the icon
Dim kmlStyle As New SharpKml.Dom.Style
kmlStyle.Id = "ShipIcon"
kmlStyle.Icon = New SharpKml.Dom.IconStyle
kmlStyle.Icon.Icon = New SharpKml.Dom.IconStyle.IconLink(New System.Uri("http://www.mysite.com/mapfiles/ship4.png")) 
kmlStyle.Icon.Scale = 1

Poscommand.CommandText = "SELECT * FROM Ships"
PosReader = Poscommand.ExecuteReader()

While PosReader.Read()
   'Add placemark for position
   kmlPosPoint = New SharpKml.Dom.Point
   kmlPosPoint.Coordinate = New SharpKml.Base.Vector(PosReader("Lat"), PosReader("Lon"))
   kmlPosPlaceMark = New SharpKml.Dom.Placemark
   kmlPosPlaceMark.Geometry = kmlPosPoint
   kmlPosPlaceMark.Name = "My Name"
   kmlPosPlaceMark.StyleUrl = New System.Uri("#ShipIcon", UriKind.Relative)
   'SET icon.heading HERE???  How to access icon heading property for this placemark only???
End While

任何人都可以帮助我使用 SharpKML 为单个地标设置图标标题吗?

4

1 回答 1

1

Heading 实际上是 IconStyle 的属性,而不是 Icon(Icon 是 IconStyle 的子属性,只指定图标图像的 URL。

在您上面的代码中,它将是(从内存中):

kmlStyle.Icon.Heading = 90;

因为您对所有项目都使用了通用样式,所以我相信您可以在循环中仅覆盖这样的样式的一部分(如果您测试,请发布结果):

kmlPosPlaceMark.StyleUrl = New System.Uri("#ShipIcon", UriKind.Relative);
Style s = new Style();
s.Icon = new IconStyle();
s.Icon.Heading = 90;
kmlPosPlaceMark.StyleSelector = s;

如果这不起作用,您可能必须为每个地标创建和设置样式,但我很确定情况并非如此。再次,请回帖,让我们知道你是怎么做到的。

于 2013-01-29T15:19:31.287 回答