KMLViewer 似乎每个Placemark 只能处理一个LineString 对象。
对于您尝试的路线,Google 在“路线”地标(文件中的最后一个)中返回两个 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>
这样做的一个问题是包含距离和时间信息的“描述”与拆分路线不匹配。