KML должен рисовать красную полилинию или синюю полилинию?

Пожалуйста, скажите мне, какой из них является "правильным поведением как формат файла KML".

Как вы, возможно, знаете, тег KML содержит информацию о цвете с порядком AABBGGRR. Это определено в документе OGC KML.

16,9 км / л: colorType

Порядок выражения aabbggrr, где aa= альфа (от 00 до ff); bb= синий (от 00 до ff); gg= зеленый (от 00 до ff); rr= красный (от 00 до ff). http://docs.opengeospatial.org/is/12-007r2/12-007r2.html

Итак <color>7f0000ff</color> должен быть красного цвета.


Example1:

С помощью этого KML-файла Google Планета Земля и API Карт Google (KmlLayer) правильно рисуют красную ломаную линию.

<?xml version="1.0" encoding="utf-8"?>
<kml xmlns="http://www.opengis.net/kml/2.2">
  <Document>
    <Style id="globalStyles">
      <LineStyle id="line">
        <color>7f0000ff</color>
        <width>4</width>
      </LineStyle>
    </Style>
    <Placemark>
      <styleUrl>#globalStyles</styleUrl>
      <LineString>
        <tessellate>1</tessellate>
        <coordinates>-14.405821,-7.963539 -14.381448,-7.975707</coordinates>
      </LineString>
    </Placemark>
  </Document>
</kml>

https://jsfiddle.net/wf9a5m75/xnw0hvvf/6/


Example2:

Однако с этим файлом KML API Карт Google рисует синюю линию, а Google Планета Земля - ​​все еще красную ломаную линию.

<?xml version="1.0" encoding="utf-8"?>
<kml xmlns="http://www.opengis.net/kml/2.2">
  <Document>
    <Style id="globalStyles">
      <LineStyle id="line">
        <color>7f0000ff</color>
        <width>4</width>
      </LineStyle>
    </Style>
      <Placemark>
        <name>runway</name>
        <styleUrl>#globalStyles</styleUrl>
        <Style>
          <LineStyle>
            <!--
            Coloring is implicitly merged from the global style, width is
            explicitly overridden.
            -->
            <width>10</width>
          </LineStyle>
        </Style>
        <LineString>
          <tessellate>1</tessellate>
          <coordinates>-14.405821,-7.963539 -14.381448,-7.975707</coordinates>
        </LineString>
      </Placemark>
  </Document>
</kml>

https://jsfiddle.net/wf9a5m75/xnw0hvvf/5/


Ответ от Google

Я считаю, что это ошибка Google Maps JS API v3, и я сообщил об этом в Google.

Но Google говорит

Статус: не будет исправлено (предполагаемое поведение)

Да. Я считаю, что Google Maps Javascript API следует "шестнадцатеричному" формату 1 для цветов. Я бы порекомендовал, по возможности, настроить параметры цвета в соответствии с шестнадцатеричным форматом API Карт Google Javascript.

https://issuetracker.google.com/issues/71991422

Вау, они действительно намерены это?


В реальной ситуации проблема

Потеря информации о цвете означает потерю значения полилинии / многоугольника.

Например, Национальное управление океанических и атмосферных исследований США (NOAA) предоставляет информацию о погодных условиях в режиме реального времени с использованием файла KMZ. https://www.weather.gov/source/crh/shapefiles/

Google Планета Земля рисует многоугольники правильными цветами (по крайней мере, я так думаю), но KmlLayer из Google Maps API v3 рисует все синие многоугольники.Изменение цвета означает изменение значения полигонов. Тебе не кажется, что это серьезная проблема?


Итак, чтобы попросить исправить проблему с Google Maps JS API v3, мне нужно знать, какой из них (красный или синий) правильный. Пожалуйста, скажите мне свой ответ с достоверной информацией.

0 ответов

Для официальной интерпретации KML обратитесь непосредственно к стандарту Open Geospatial Consortium (OGC) KML 2.2. Примечание. KML 2.3 опубликован, но еще не реализован в Google Планета Земля или в Картах Google. В теге видимости возникла проблема, когда в Google Планета Земля реализовано поведение, противоречащее спецификации KML, но исправление нарушило бы существующий код, поэтому его нельзя будет "исправить". В случаях противоречий официальный Стандарт OGC KML заменяет любую документацию или реализацию поставщика.

KML 2.2 (Документ № 07-147r2) в разделе 16.8.1 гласит:

Порядок выражения aabbggrr, где aa= альфа (от 00 до ff); bb= синий (от 00 до ff); gg= зеленый (от 00 до ff); rr= красный (от 00 до ff)

В 16.7.1 также приведен пример, показывающий, что значение ff0000ff предназначено для красного цвета, где последние 2 символа (ff) представляют красный компонент.

Это означает, что Google Планета Земля правильно отображает функции рендеринга KML, используя <color>7f0000ff</color> с красным цветом. Google Maps API не отображает его правильно и является ошибкой.

Ссылка:

Другие вопросы по тегам