Ссылаясь на метку в KML - PullRequest
       9

Ссылаясь на метку в KML

2 голосов
/ 15 сентября 2011

Есть ли способ ссылки на метку (возможно, с помощью атрибута идентификатора метки)?

Вариант использования:

Предположим, у вас есть список автобусных остановок в городе.Некоторые остановки будут общими для многих автобусных линий.Если ссылки на метки были возможны, то мог бы быть главный список всех остановок, и каждая строка (установленная в отдельной папке) могла просто ссылаться на одну из вышеуказанных меток.Выбор нескольких папок будет отображать другие метки для этих строк, но уже отображаемые метки не будут отображаться несколько раз.

Это приведет к гораздо меньшему беспорядку, особенно если имена отображаются только один раз.

1 Ответ

2 голосов
/ 23 сентября 2011

К сожалению, нет, поскольку схема Kml не поддерживает отношения «один ко многим» или символические ссылки (кроме стилей, но это не очень полезно для вас.)

Однако одним способом вы могли быэмулируйте это, используя ссылки в описаниях папок.

Чтобы использовать ваш пример, скажем, у вас есть один файл, в котором определен ваш главный список меток «автобусных остановок».Затем вы можете определить все свои маршруты в папках с описанием ссылок на соответствующие остановки.

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

например

<kml>
  <Folder id="stops">
    <Placemark id="p1">
      <name>stop 1</name>
    </Placemark>
    <Placemark id="p2">
      <name>stop 2</name>
    </Placemark>
    <Placemark id="p3">
      <name>stop 3</name>
    </Placemark>
    <Placemark id="p4">
      <name>stop 4</name>
    </Placemark>
    </Folder>
    <Folder id="r1">
      <name>route 1</name>
      <description>
        <![CDATA[
        <a href="#p1;balloonFlyto">stop 1</a>
        <a href="#p3;balloonFlyto">stop 3</a>
        ]]>
      </description>
    </Folder>
    <Folder id="r2">
      <name>route 2</name>
      <description>
        <![CDATA[
        <a href="#p1;balloonFlyto">stop 1</a>
        <a href="#p2;balloonFlyto">stop 2</a>
        <a href="#p4;balloonFlyto">stop 4</a>
        ]]>
      </description>
    </Folder>
</kml>

РЕДАКТИРОВАТЬ

Вы также можете просто хранить свои данные в чем-то, что делаетподдержка один ко многим, как в базе данных MySQL.Затем вы можете запросить его, как вам будет угодно, для создания KML по мере необходимости на основании сделанного запроса.Взгляните на это Приложение для управления базами данных Earth Используя PHP & MySQL с API-интерфейсом Earth , вы узнаете, как настроить базу данных для хранения ваших данных, как запрашивать ее и выводить из нее KML.

...