Как заставить линии работать в Google Планета Земля

Итак, я просматривал документацию GE и нашел, как использовать LineStyle и LineString для стилизации и отображения линии, но на практике я не могу заставить это работать. Вот мой KML:

<?xml version="1.0" encoding="UTF-8"?>
<kml xmlns="http://www.opengis.net/kml/2.2"><Document><Style id="thisStyle">
<LineStyle>
<color>500078F0</color>
<colorMode>Normal</colorMode>
<width>5</width>
</LineStyle>
</Style>
<Placemark>
<name>502-2012-11-19 05:27:03</name>
<description>Speed:0</description>
<Point>
<coordinates>-76.0513,42.0894,247</coordinates>
</Point>
</Placemark>
<Placemark>
<name>502-2012-11-19 05:26:46</name>
<description>Speed:0</description>
<Point>
<coordinates>-76.0517,42.0886,287</coordinates>
</Point>
</Placemark>
....
<Placemark>
<name>525-2012-11-19 04:38:25</name>
<description>Speed:0</description>
<Point>
<coordinates>-76.0512,42.0894,178</coordinates>
</Point>
</Placemark>
<styleUrl>#thisStyle</styleUrl>
<LineString>
<tessellate>1</tessellate>
<altitudeMode>clampToGround</altitudeMode>
<coordinates>
-76.0513,42.0894,247 
-76.0517,42.0886,287 
....
-76.0512,42.0894,178 
</coordinates></LineString></Document></kml>

Примечание: вышеприведенные места, где появляется "...", содержат еще около 50 наборов координат, я удалил их для краткости, но поскольку все координаты создаются скриптом, если один из них работает, я знаю, что все они будут работать. Может ли кто-нибудь подтолкнуть меня в правильном направлении, почему все мои метки отображаются, но нет линий?


person eric_spittle    schedule 19.11.2012    source источник


Ответы (2)


Элемент LineString допустим только внутри метки (или MultiGeometry внутри метки). :

<Placemark>
  <LineString>
    <tessellate>1</tessellate>
    <altitudeMode>clampToGround</altitudeMode>
    <coordinates>
      -76.0513,42.0894,247 
      -76.0517,42.0886,287 
      -76.0512,42.0894,178 
    </coordinates>
  </LineString>
</Placemark>
person geocodezip    schedule 20.11.2012
comment
Большое спасибо, это объясняет, в чем проблема. После размещения тега Placemark вокруг моего LineString он работает отлично, большое спасибо. - person eric_spittle; 20.11.2012

Вы должны либо встроить стиль в метку, либо указать ссылку на стиль в метке с помощью элемента styleUrl.

Последнюю метку в вашем примере нужно переписать так:

<Placemark>
    <name>525-2012-11-19 04:38:25</name>
    <description>Speed:0</description>
    <styleUrl>#thisStyle</styleUrl>
    <LineString>
        <tessellate>1</tessellate>
        <altitudeMode>clampToGround</altitudeMode>
        <coordinates>
            -76.0513,42.0894,247 
            -76.0517,42.0886,287
             ...
            -76.0512,42.0894,178 
        </coordinates>
    </LineString>
</Placemark>

Если ваш KML отображается неправильно, обычно помогает проверка KML. Вы можете использовать валидатор KML.

person JasonM1    schedule 20.11.2012
comment
Большое спасибо за ваш ответ и подсказку с KML Validator. Оба ответа были правильными, но я стараюсь всегда отмечать первый правильный ответ, чтобы быть честным. Большое спасибо за вашу помощь и код, я действительно ценю это. - person eric_spittle; 20.11.2012