KMLViewer Apple的例子不起作用

时间:2011-07-05 17:33:55

标签: ios routes maps mkmapview kml

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

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

我缺少什么? 你可以尝试,马德里 - 巴塞罗那,你也有同样的问题。

提前感谢你在这个问题上花了一些时间。

2 个答案:

答案 0 :(得分:2)

看起来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>

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

另一种解决方法是将“路线”地标拆分为多个地标(每个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>

这个问题的一个问题是包含距离和时间信息的“描述”与拆分路线不匹配。

答案 1 :(得分:1)

烨。非常感谢您的快速反应。我早上发现问题在于这些标签在一起(关闭和打开)

</coordinates></LineString><LineString><coordinates>

我的计划:

将URL的输出保存到NSString,如果存在上面的标记则删除,然后保存到文件并将其发送到KMLParser。 我完成后会回来的。

再次感谢您的回复。