Попытка изменить прозрачность и цвет заливки визуализируемого KML - PullRequest
0 голосов
/ 11 июля 2019

Я загружаю файлы KML на карту Google и хотел бы, чтобы они были полностью прозрачными, за исключением цветов границ, или чтобы они были полностью заполнены тем же цветом, что и границы.

Я попытался вручную отредактировать теги файлов KML для пользовательских цветов и добавить параметр заливки.Только контуры меняют цвет, а фон остается синим оттенком.

    let path = Bundle.main.path(forResource: "shapes", ofType: "kml")
    let url = URL(fileURLWithPath: path!)
    kmlParser = GMUKMLParser(url: url)

    print(String(kmlParser.placemarks.count))
    kmlParser.parse()

    print("KML Placemarks")

    renderer = GMUGeometryRenderer(map: mapView, geometries: kmlParser.placemarks, styles: kmlParser.styles)

    renderer.render()

<Style><LineStyle><color>ff102ae9</color></LineStyle><PolyStyle><fill>1</fill></PolyStyle></Style>
    <ExtendedData><SchemaData schemaUrl="#DVW_Poll_Shapes">
        <SimpleData name="OBJECTID">31213</SimpleData>
        <SimpleData name="Shape_Leng">54.14420964730</SimpleData>
        <SimpleData name="Shape_Area">150.01281437100</SimpleData>
        <SimpleData name="pd_id">1226974.00000000000</SimpleData>
        <SimpleData name="pd_num">414</SimpleData>
        <SimpleData name="pd_nbr_sfx">0</SimpleData>
        <SimpleData name="pd_type_co">S</SimpleData>
        <SimpleData name="pd_type">Single Building</SimpleData>
        <SimpleData name="adv_poll">605</SimpleData>
        <SimpleData name="ad_updt_dt">2014/01/09</SimpleData>
        <SimpleData name="fed_num">35021</SimpleData>
        <SimpleData name="ed_id">2168</SimpleData>
        <SimpleData name="a_updt_dte">2014/09/05</SimpleData>
        <SimpleData name="g_updt_dte">2013/12/18</SimpleData>
        <SimpleData name="emrp_name">414</SimpleData>
        <SimpleData name="poll_name">Toronto</SimpleData>
        <SimpleData name="urban_rura">U</SimpleData>
    </SchemaData></ExtendedData>
      <MultiGeometry><Polygon><outerBoundaryIs><LinearRing><coordinates>-79.3915075485372,43.7118790632914 -79.3914461229801,43.711708989583 -79.3915940654072,43.711771743595 -79.3916247891187,43.7118567782021 -79.3915075485372,43.7118790632914</coordinates></LinearRing></outerBoundaryIs></Polygon></MultiGeometry>
  </Placemark>
  <Placemark>
    <Style><LineStyle><color>ff0000ff</color></LineStyle><PolyStyle><fill>0</fill></PolyStyle></Style>
    <ExtendedData><SchemaData schemaUrl="#DVW_Poll_Shapes">
        <SimpleData name="OBJECTID">31250</SimpleData>
        <SimpleData name="Shape_Leng">4948.09285323000</SimpleData>
        <SimpleData name="Shape_Area">276747.33755900001</SimpleData>
        <SimpleData name="pd_id">1226816.00000000000</SimpleData>
        <SimpleData name="pd_num">1</SimpleData>
        <SimpleData name="pd_nbr_sfx">0</SimpleData>
        <SimpleData name="pd_type_co">N</SimpleData>
        <SimpleData name="pd_type">Normal</SimpleData>
        <SimpleData name="adv_poll">601</SimpleData>
        <SimpleData name="ad_updt_dt">2014/01/09</SimpleData>
        <SimpleData name="fed_num">35021</SimpleData>
        <SimpleData name="ed_id">2168</SimpleData>
        <SimpleData name="a_updt_dte">2014/09/05</SimpleData>
        <SimpleData name="g_updt_dte">2014/02/03</SimpleData>
        <SimpleData name="emrp_name">1</SimpleData>
        <SimpleData name="poll_name">North York</SimpleData>
        <SimpleData name="urban_rura">U</SimpleData>
    </SchemaData></ExtendedData>
      <MultiGeometry><Polygon><outerBoundaryIs><LinearRing><coordinates>-79.3829339057042,43.7640197027211 -79.3824213046479,43.7642986089789 -79.3813317261181,43.7645308700421 -79.3805594887594,43.7646954866915 -79.3804171119731,43.7647245604304 -79.379734983861,43.7648637890067 -79.3795350883956,43.7649060063971 -79.3793457889739,43.7649417086907 -79.3783363016466,43.7651320956575 -79.3777372162075,43.765231696825 -79.3775375901914,43.765264804412 -79.3773379126225,43.7652980023781 -79.3771381895119,43.765331193887 -79.3767390943774,43.7653885907906 -79.3765394051902,43.7654216871224 -79.3763272943785,43.7654547133509 -79.3761278865625,43.7654789030921 -79.3760889253479,43.7654853790177 -79.375928194652,43.7655121050385 -79.3757287863783,43.7655362938797 -79.3755291006739,43.7655693893707 -79.3754610617286,43.7655770961034 -79.3753171864395,43.765593395406 -79.3751178096301,43.7656175959002 -79.3749184061964,43.7656418105093 -79.3747064997753,43.7656657906126 -79.3744947030105,43.765689812303 -79.374493976808,43.7656898878276 -79.3732490911899,43.7658070928031 -79.3730375056298,43.765822096344 -79.3728259082594,43.7658370978081 -79.3726142868677,43.7658520949762 -79.3724024165043,43.7658761024911 -79.3722032078521,43.7658913012494 -79.3719915856488,43.7659062979611 -79.3717799896258,43.7659211982494 -79.3715685947478,43.765927207415 -79.3702297465856,43.7659948874685 -79.3690680182758,43.7660535914155 -79.3657467052555,43.7662043099664 -79.3654605827209,43.7662181970813 -79.3654592298692,43.7662182609634 -79.3652250503774,43.7662289643845 -79.3629663912518,43.7663321367315 -79.3628468231125,43.7661767421519 -79.3627137529701,43.7660038146628 -79.3626782062289,43.7659575959947 -79.3626672118907,43.7659435834563 -79.3623867018644,43.7655866002722 -79.3622289937908,43.7652486863294 -79.362088212425,43.7648837111444 -79.3620177873659,43.7645041021951 -79.3619858090691,43.7640978124729 -79.3619989118321,43.7638130917912 -79.3619132898164,43.7620394959611 -79.3619110305792,43.7619912684916 -79.3619108806645,43.7619896068031 -79.3619086955509,43.7618252547234 -79.3619067807148,43.7616834083467 -79.3618663033079,43.7613496899886 -79.3618008083822,43.7610155972046 -79.3616615044584,43.7602032977596 -79.3616026175966,43.7600853948528 -79.3614682915072,43.7595433087774 -79.3612549990718,43.7587119052442 -79.3623790057887,43.7584938930712 -79.3624256877354,43.7586026007196 -79.36265809597,43.7591911947539 -79.3627298884738,43.7592912091407 -79.3628377110572,43.7594367940909 -79.3629945169627,43.7596101933 -79.3631032950465,43.7597197945769 -79.3632118940043,43.7598383888159 -79.3633329146342,43.7599571897155 -79.3634550850837,43.760030890587 -79.3635655899567,43.7600775012698 -79.3637384951319,43.7601160125493 -79.3638862971123,43.7601631913237 -79.3639837112292,43.7602365998524 -79.3640555061464,43.7603367123205 -79.3641031844641,43.7604093966706 -79.3641544092345,43.7605169929181 -79.3642423923734,43.7607714986148 -79.3642764074646,43.760889009065 -79.3643102920499,43.7610155923472 -79.3643436054062,43.7611601033211 -79.3643520924121,43.7613043037956 -79.3643354792104,43.7614571105593 -79.3643061863275,43.7616187831813 -79.3642771966803,43.7617713912838 -79.3642352968423,43.761941903898 -79.3641940996236,43.7620853985281 -79.3641539886755,43.7621928040051 -79.364138086485,43.7623187105335 -79.3641343930697,43.7624537040392 -79.3641449185196,43.7625257882023 -79.3641533902404,43.7626699974536 -79.3641496989964,43.7628049915821 -79.3641954023859,43.7629497056455 -79.3643010922039,43.7631763039167 -79.3647156010671,43.7639206006892 -79.3649176963182,43.7642566097044 -79.3651331056523,43.7645299094107 -79.3652168044102,43.7646751122874 -79.3653016006789,43.7647573043551 -79.3653987077968,43.7648397040476 -79.3654960986504,43.7649131072082 -79.3656064095428,43.7649687061634 -79.365729406974,43.7650155008561 -79.3658528103763,43.7650442997597 -79.3659765209433,43.7650640952741 -79.3661006824938,43.7650659009996 -79.3673316099707,43.7650294154583 -79.3682639800441,43.7650067078686 -79.3685866842761,43.7650202891457 -79.3689829009464,43.7650709925424 -79.369243890294,43.7650656908195 -79.3699956013944,43.765024999402 -79.3705252993868,43.7650029938172 -79.3712599087826,43.7649414029488 -79.3717199000536,43.7649300102016 -79.3727587108598,43.7648550016139 -79.3743303207882,43.7653362956924 -79.3744597482019,43.7653245576716 -79.3751024855465,43.7652662085369 -79.3761488007382,43.7651641002955 -79.3762734880773,43.7651478038524 -79.3764105911781,43.765131791118 -79.3771840101324,43.765016702381 -79.3775210028643,43.7649585021559 -79.377845409059,43.7649091094486 -79.3781699082671,43.7648505849098 -79.3784945151805,43.7647922089199 -79.3788189120015,43.7647427847969 -79.3791434817779,43.764684401085 -79.3791659387112,43.7646803690182 -79.3794680927748,43.7646259961632 -79.3797926857761,43.7645675072687 -79.3801172838148,43.7645090973709 -79.380442094143,43.7644416991472 -79.3825391032,43.7640752030626 -79.3829339057042,43.7640197027211</coordinates></LinearRing></outerBoundaryIs></Polygon></MultiGeometry>
  </Placemark>
  <Placemark>
    <Style><LineStyle><color>ff3a96b0</color></LineStyle><PolyStyle><fill>1</fill></PolyStyle></Style>
    <ExtendedData><SchemaData schemaUrl="#DVW_Poll_Shapes">
        <SimpleData name="OBJECTID">31251</SimpleData>
        <SimpleData name="Shape_Leng">844.55728490700</SimpleData>
        <SimpleData name="Shape_Area">30974.40888300000</SimpleData>
        <SimpleData name="pd_id">1226899.00000000000</SimpleData>
        <SimpleData name="pd_num">71</SimpleData>
        <SimpleData name="pd_nbr_sfx">0</SimpleData>
        <SimpleData name="pd_type_co">N</SimpleData>
        <SimpleData name="pd_type">Normal</SimpleData>
        <SimpleData name="adv_poll">603</SimpleData>
        <SimpleData name="ad_updt_dt">2014/09/05</SimpleData>
        <SimpleData name="fed_num">35021</SimpleData>
        <SimpleData name="ed_id">2168</SimpleData>
        <SimpleData name="a_updt_dte">2014/10/10</SimpleData>
        <SimpleData name="g_updt_dte">2013/12/18</SimpleData>
        <SimpleData name="emrp_name">71</SimpleData>
        <SimpleData name="poll_name">North York</SimpleData>
        <SimpleData name="urban_rura">U</SimpleData>
    </SchemaData></ExtendedData>
      <MultiGeometry><Polygon><outerBoundaryIs><LinearRing><coordinates>-79.3718486070514,43.7180493115572 -79.3718260834591,43.7179493039593 -79.3740483026248,43.7175098691076 -79.375646922996,43.7171936938997 -79.3759407871753,43.717973590952 -79.3760049888245,43.7181341929831 -79.3745826589327,43.7183124432483 -79.3720637898542,43.7186054254925 -79.3718486070514,43.7180493115572</coordinates></LinearRing></outerBoundaryIs></Polygon></MultiGeometry>
  </Placemark>

1 Ответ

0 голосов
/ 17 июля 2019

Файл, которым вы поделились в комментариях, выглядит как относительно простой KML с большой коллекцией полигонов, каждый из которых имеет одинаковый стиль.В этом случае стиль, на который они указывают, - это StyleMap, который, в свою очередь, указывает на обычный стиль и стиль выделения.Если вы не хотите, чтобы стиль менялся, когда пользователь наводит указатель мыши на функцию, вы должны просто сделать обычный стиль и стиль выделения одинаковыми.

Стили по умолчанию в файле включают в себя только цвет контура многоугольника и не заполнены многоугольником.Чтобы добавить заливку, сначала нужно добавить тег <fill>1</fill> в PolyStyle, и пока вы это делаете, вы также можете явно указать <outline>1</outline>.Дополнительная документация по PolyStyle находится здесь: https://developers.google.com/kml/documentation/kmlreference#polystyle

Далее вам необходимо правильно отредактировать цвета.Обратите внимание, что цвета KML не похожи на цвета HTML (красный, зеленый, синий).Цвета KML поменялись местами и имеют двузначную альфа (непрозрачность) впереди, поэтому они читают: AABBGGRR.Например, 50% непрозрачный оранжевый будет <color>8014B4FF</color>, и PolyStyle в конечном итоге будет выглядеть так:

<PolyStyle>
    <color>8014B4FF</color>
    <fill>1</fill>
    <outline>1</outline>
</PolyStyle>

Полезный сайт для цветов KML: http://www.zonums.com/gmaps/kml_color/

Нижеэто пример KML, полученный из вашего оригинала.Я заменил полигоны одним прямоугольником, удалил все данные атрибутов (теги Schema и ExtendedData) и внес изменения в стили, упомянутые выше.Я также немного изменил стили подсветки, чтобы вы могли увидеть, как это может работать (контур становится больше и желтее, заливка становится менее непрозрачной).Вы можете просто скопировать / вставить его в Google Планета Земля Про, чтобы увидеть результаты.Надеюсь, это даст вам то, что вам нужно.

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

<?xml version="1.0" encoding="UTF-8"?>
<kml xmlns="http://www.opengis.net/kml/2.2" xmlns:gx="http://www.google.com/kml/ext/2.2" xmlns:kml="http://www.opengis.net/kml/2.2">
<Document>
    <name>Styling example</name>

    <StyleMap id="m_ylw-pushpin">
        <Pair>
            <key>normal</key>
            <styleUrl>#s_ylw-pushpin</styleUrl>
        </Pair>
        <Pair>
            <key>highlight</key>
            <styleUrl>#s_ylw-pushpin_hl</styleUrl>
        </Pair>
    </StyleMap>
    <Style id="s_ylw-pushpin">
        <LineStyle>
            <color>ff0000ff</color>
            <width>3</width>
        </LineStyle>
        <PolyStyle>
            <color>8014B4FF</color>
            <fill>1</fill>
            <outline>1</outline>
        </PolyStyle>
    </Style>
    <Style id="s_ylw-pushpin_hl">
        <LineStyle>
            <color>ff00ffff</color>
            <width>5</width>
        </LineStyle>
        <PolyStyle>
            <color>5014B4FF</color>
            <fill>1</fill>
            <outline>1</outline>
        </PolyStyle>
    </Style>

    <Placemark id="kml_1">
        <name>example polygon</name>
        <snippet></snippet>
        <description>This is the description (attribute data removed for this example).</description>
        <styleUrl>#m_ylw-pushpin</styleUrl>
        <Polygon>
            <outerBoundaryIs>
                <LinearRing>
                    <coordinates>
                        -79.6,43.8,0 
                        -79.6,43.7,0 
                        -79.5,43.7,0 
                        -79.5,43.8,0 
                        -79.6,43.8,0 
                    </coordinates>
                </LinearRing>
            </outerBoundaryIs>
        </Polygon>
    </Placemark>

</Document>
</kml>
...