我一直在寻找我的问题的答案但没有成功。 所以这就是......
KMLViewer,Apple的例子在某些情况下不起作用。 执行README步骤后,我试图在葡萄牙里斯本和葡萄牙波尔图之间建立一条路线。而这里最奇怪的事情发生了。注释是正确构建的,虽然叠加(MKPolyline)没有,它只绘制部分路线,并在“注释”的中间开始绘制。
我缺少什么? 你可以尝试,马德里 - 巴塞罗那,你也有同样的问题。
提前感谢你在这个问题上花了一些时间。
答案 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。 我完成后会回来的。
再次感谢您的回复。