Порядок слоев KML - PullRequest
       11

Порядок слоев KML

0 голосов
/ 08 апреля 2019

Я создал KML-файлы из esri Shapefiles для использования в Google Планета Земля.Проблема в том, что когда я добавлю два файла, нижний набор полигонов покажет линии над верхними полигонами, скрывающими часть области.

Я видел, как люди ссылались на что-то о коде, но я надеялся, что кто-то может предложитьдругое решение, не относящееся к кодированию, или лучше объясните, куда этот код пойдет и как он работает.

Это не имеет смысла для меня.

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

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

1 Ответ

0 голосов
/ 13 апреля 2019

Если вы хотите, чтобы один многоугольник всегда находился поверх другого, где оба имеют значение encryedToGround , то следует использовать свойство gx: drawOrder .

Обратите внимание на документацию(см. ниже) определяет только LineStrings, но также работает для Lines, LinearRings и Polygons.Везде, где "LineStrings" упоминается ниже, просто замените его на Lines, Rings и Polygons.Поддержка drawOrder для Polygons недокументирована, но, тем не менее, реализована в Google Планета Земля.

Документация KML:

<gx:drawOrder>

"Целочисленное значение, определяющее порядокдля рисования нескольких линейных строк (или многоугольников). LineStrings нарисованные первыми могут быть частично или полностью скрыты LineStrings с более поздним (или более высоким) порядком рисования.элемент может потребоваться вместе с элементами <gx:outerColor> и <gx:outerWidth> в <LineStyle>, когда двухцветные линии пересекаются друг с другом. "

В приведенном ниже примере красный многоугольник рисуется поверхсиний многоугольник.Чтобы заставить синий многоугольник рисовать поверх красного, измените его значение drawOrder на большее число.

 <kml xmlns="http://www.opengis.net/kml/2.2" xmlns:gx="http://www.google.com/kml/ext/2.2">
    <Document>
        <Placemark>
            <name>Red Polygon</name>
            <description>gx:drawOrder=3</description>
            <Style>
              <LineStyle>
                <color>ff000000</color>
              </LineStyle>
              <PolyStyle>
                <color>ff0000ff</color>
              </PolyStyle>
            </Style>
            <Polygon>
                <gx:drawOrder>3</gx:drawOrder>
                <tessellate>1</tessellate>
                <outerBoundaryIs>
                    <LinearRing>
                        <coordinates>
                        14.456906,37.345497,0 14.949769,37.346531,0
                        14.960918,37.987563,0 14.45089,37.987521,0
                        14.456906,37.3455,0 
                    </coordinates>
                    </LinearRing>
                </outerBoundaryIs>
            </Polygon>
        </Placemark>        

        <Placemark>
            <name>Blue Polygon</name>
            <description>gx:drawOrder=2</description>
            <Style>
              <LineStyle>
                <color>ff000000</color>
              </LineStyle>
              <PolyStyle>
                <color>ffff0000</color>
              </PolyStyle>
            </Style>
            <Polygon>
                <gx:drawOrder>2</gx:drawOrder>
                <tessellate>1</tessellate>
                <outerBoundaryIs>
                    <LinearRing>
                        <coordinates>
                        14.83626,38.016863,0 14.835535,37.645589,0
                        15.47025,37.589266,0 15.470457,38.019158,0
                        14.83626,38.016862,0 
                    </coordinates>
                    </LinearRing>
                </outerBoundaryIs>
            </Polygon>
        </Placemark>
    </Document>
 </kml>
...