我一直在寻找我的问题的答案,但没有成功。
所以就这样...
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/