由于样式图,KMLViewer不会显示曲目

时间:2012-03-17 16:27:42

标签: ios mkmapview kml google-earth

我一直在使用Apple的KMLViewer代码在我的MKMapView上显示曲目。我通过将Google地球中的地点保存为KML文件来创建KML文件,但除非我更改KML文件中的样式地图,否则曲目不会显示在地图中。

在KML文件的开头是样式图:

<Style id="lineStyle0000">
    <LineStyle>
        <color>ff0600ff</color>
        <width>4</width>
    </LineStyle>
</Style>
<StyleMap id="lineStyle11000">
    <Pair>
        <key>normal</key>
        <styleUrl>#lineStyle0000</styleUrl>
    </Pair>
    <Pair>
        <key>highlight</key>
        <styleUrl>#lineStyle01</styleUrl>
    </Pair>
</StyleMap>
<Style id="lineStyle01">
    <LineStyle>
        <color>ff0600ff</color>
        <width>4</width>
    </LineStyle>
</Style>

KML文件中的曲目以

开头
<Placemark>
    <name>Track01</name>
    <visibility>0</visibility>
    <styleUrl>#lineStyle11000</styleUrl>
    <LineString>
        <tessellate>1</tessellate>
        <coordinates>...

当我运行应用程序时,轨道根本不显示。如果我将轨道开头的styleUrl标签从#lineStyle11000更改为#lineStyle0000,它会显示正常。当我有一两首曲目要显示时,这很容易做到,但这是一个烦恼。当我在一个KML文件中显示十到十五首曲目时,它真的会耗费一些时间。

有没有办法避免这个问题?我将所有曲目保存在Google地球中,以便我可以轻松管理它们,但我不想在每次需要将其放入应用程序时手动更改文件的文本。

由于

2 个答案:

答案 0 :(得分:1)

我一直在使用的解决方案并没有真正解决问题,但可以解决它。 Google地球会使用样式地图导出kml文件,但如果您使用输出格式为Google Earth KML通过GPSVisualizer发送kml文件,则只需将整个文件转换为Apple的KMLViewer可以读取的更简单格式,保持所有颜色和线条大小。

退出警察,但它确实有效。

答案 1 :(得分:0)

您可以自动编辑文件以删除所有styleUrls行

grep -v styleUrl old.kml > new.kml

或在您的应用中运行查找和替换。