KML должен рисовать красную полилинию или синюю полилинию?
Пожалуйста, скажите мне, какой из них является "правильным поведением как формат файла 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 не отображает его правильно и является ошибкой.
Ссылка:
- Стандарт KML: http://www.opengeospatial.org/standards/kml