Похоже, что 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>
Вышесказанное может иметь смысл только для маршрутов (отрезков), которые должны быть непрерывными.
Другой обходной путь - разделить метку «Маршрут» на несколько меток (по одной для каждой строки строки):
<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>
Одна из проблем заключается в том, что «описание», содержащее информацию о расстоянии и времени, не будет соответствовать маршрутам разделения.