我一直在寻找我的问题的答案,但没有成功。
所以就这样...

Apple的示例KMLViewer在某些情况下不起作用。
在执行README步骤之后,我尝试在葡萄牙里斯本和葡萄牙波尔图之间建立一条路线。在这里,最奇怪的事情发生了。尽管覆盖图(MKPolyline)没有正确构建,但注释构建正确,尽管它仅绘制了部分路线,并且在“注释”的中间开始绘制。

我想念什么?
您可以尝试,马德里-巴塞罗那,您也遇到同样的问题。

预先感谢您花一些时间在此问题上。

最佳答案

看来KMLViewer只能为每个LineString处理一个Placemark对象。

对于您尝试的路线,Google会在“路线”地标(文件中的最后一个)中返回两个LineString对象。 KMLViewer仅显示第二个(最后一个)LineString段。

除了更新KMLViewer代码以添加对每个地标的多个LineString对象的支持(这似乎是一个很好的练习)之外,您还可以尝试以下两种解决方法:

将两个LineString对象的坐标合并为一个LineString。更改:

<Placemark>
    <name>Route</name>
    <description>some cdata stuff here</description>
    <GeometryCollection>
        <LineString><coordinates>coord1 … coordN</coordinates></LineString>
        <LineString><coordinates>coordN+1 … coordK</coordinates></LineString>
    </GeometryCollection>
    <styleUrl>#roadStyle</styleUrl>
</Placemark>

对此:
<Placemark>
    <name>Route</name>
    <description>some cdata stuff here</description>
    <GeometryCollection>
        <LineString><coordinates>coord1 … coordN coordN+1 … coordK</coordinates></LineString>
    </GeometryCollection>
    <styleUrl>#roadStyle</styleUrl>
</Placemark>

上面的内容仅对应该是连续的路线(线段)有意义。

另一个解决方法是将“Route”地标拆分为多个地标(每个LineString一个)。
<Placemark>
    <name>Route A</name>
    <description>some cdata stuff here</description>
    <GeometryCollection>
        <LineString><coordinates>coord1 … coordN</coordinates></LineString>
    </GeometryCollection>
    <styleUrl>#roadStyle</styleUrl>
</Placemark>
<Placemark>
    <name>Route B</name>
    <description>some cdata stuff here</description>
    <GeometryCollection>
        <LineString><coordinates>coordN+1 … coordK</coordinates></LineString>
    </GeometryCollection>
    <styleUrl>#roadStyle</styleUrl>
</Placemark>

这样做的一个问题是,包含距离和时间信息的“说明”将与拆分路线不匹配。

关于ios - KMLViewer Apple的示例不起作用,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/6586579/

10-08 20:49