我一直在寻找我的问题的答案,但没有成功。所以它开始了..。
KMLViewer,苹果的例子在某些情况下是行不通的。在执行完README步骤之后,我尝试在葡萄牙的里斯本和葡萄牙的波尔图之间建立一条航线。最奇怪的事情发生了。注释是正确构建的,尽管覆盖(MKPolyline)没有正确构建,但它只绘制了路由的一部分,并且在“注释”的中间开始绘制。
我错过了什么?你可以试试,马德里-巴塞罗那,你也有同样的问题。
提前感谢你花时间在这期杂志上。
发布于 2011-07-05 20:33:51
看起来KMLViewer在每个Placemark
上只能处理一个LineString
对象。
对于您尝试的路线,谷歌将在" route“地标(文件中的最后一个)中返回两个LineString对象。KMLViewer仅显示第二个(最后一个) LineString数据段。
除了更新KMLViewer代码以添加对每个Placemark多个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>
这样做的一个问题是,包含距离和时间信息的“描述”将与分割的路线不匹配。
发布于 2011-07-06 15:02:46
是啊。非常感谢您的快速响应。早上我发现问题出在这些标签上(关闭和打开)
</coordinates></LineString><LineString><coordinates>
我的计划是:
将输出从URL保存到NSString,如果存在上述标记,则将其删除,然后保存到文件并将其发送到KMLParser。我完事后会回来的。
再次感谢您的回复。
https://stackoverflow.com/questions/6586579
复制相似问题