KMLViewer: пример Apple не работает - PullRequest
3 голосов
/ 05 июля 2011

Я довольно долго искал ответ на мою проблему, но безуспешно.Так что вот так ...

KMLViewer, пример Apple в некоторых случаях не работает.После выполнения шагов README я попытался построить маршрут между Лиссабоном, Португалия и Порту, Португалия.И тут происходит самое странное.Аннотации построены правильно, хотя оверлей (MKPolyline) этого не делает, он рисует только часть маршрута и начинает рисовать в середине «аннотации».

Чего мне не хватает?Вы можете попробовать, Мадрид - Барселона, у вас тоже есть та же проблема.

Заранее благодарим за то, что потратили некоторое время на этот выпуск.

Ответы [ 2 ]

2 голосов
/ 06 июля 2011

Похоже, что 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>

Одна из проблем заключается в том, что «описание», содержащее информацию о расстоянии и времени, не будет соответствовать маршрутам разделения.

1 голос
/ 06 июля 2011

Да.Большое спасибо за ваш быстрый ответ.Утром я обнаружил, что проблема с этими тегами вместе (закрыть и открыть)

</coordinates></LineString><LineString><coordinates>

Мой план:

Сохранить выходные данные из URL-адреса в NSString, удалить, если существуют тегивыше, затем сохраните в файл и отправьте его в KMLParser.Я вернусь, когда закончу.

Еще раз большое спасибо за ваш ответ.

...