vrba99
vrba99

Reputation: 21

Set fill color in placemark from KML file in Android

I want set fill color to placemark in GoogleMap, But it does not work. I use KML from fill polygons in google map/earth and my result is: https://i.sstatic.net/ecNk3.jpg

My code is:

KmlLayer kmlLayer = new KmlLayer(googleMap,R.raw.test,getActivity().getApplication());
kmlLayer.addLayerToMap();

KML file is:

<?xml version="1.0" encoding="utf-8"?>
<kml xmlns="http://www.opengis.net/kml/2.2">
 <Document>
    <Style id="s1">
      <LineStyle>
        <color>7f0000ff</color>
        <width>4</width>
      </LineStyle>
      <PolyStyle>
        <color>7f0000ff</color>
        <colorMode>normal</colorMode>
        <fill>1</fill>
        <outline>1</outline>
      </PolyStyle>
    </Style>
    <name>All isolation countries</name>
    <description>All isolation countries</description>
    <Placemark>
      <styleUrl>#s1</styleUrl>
      <name>Indonesia</name>
      <Polygon>
      <tessellate>1</tessellate>
        <extrude>1</extrude>
        <altitudeMode>clampedToGround</altitudeMode>
        <outerBoundaryIs>
          <LinearRing>
            <coordinates>102.4918975830078,1.259721994400024,0 102.3088989257813,1.420554995536804,0 102.1374969482422,1.448055028915405,0 102.0785980224609,1.485000014305115,0 101.9944000244141,1.600000023841858,0 102.0065994262695,1.619166970252991,0 102.4349975585938,1.527500033378601,0 102.4779968261719,1.502221941947937,0 102.4954986572266,1.436308026313782,0 102.504997253418,1.273888945579529,0 102.4918975830078,1.259721994400024,0</coordinates>
          </LinearRing>
        </outerBoundaryIs>
      </Polygon>
    </Placemark>
    <Placemark>
      <styleUrl>#s1</styleUrl>
      <name>Ecuador</name>
      <Polygon>
      <tessellate>1</tessellate>
        <extrude>1</extrude>
        <altitudeMode>clampedToGround</altitudeMode>
        <outerBoundaryIs>
          <LinearRing>
            <coordinates>-90.61167907714844,-0.3755556046962738,0 -90.77166748046875,-0.344166785478592,0 -90.87222290039063,-0.2652778923511506,0 -90.79332733154297,-0.149444505572319,0 -90.77362060546876,-0.1550000011920929,0 -90.58556365966797,-0.2455555945634842,0 -90.55029296875,-0.3091666996479035,0 -90.61167907714844,-0.3755556046962738,0</coordinates>
          </LinearRing>
        </outerBoundaryIs>
      </Polygon>
    </Placemark>
    </Document>
    </kml>

Upvotes: 1

Views: 3111

Answers (3)

Muhammad Sholihin
Muhammad Sholihin

Reputation: 127

Remove colorMode,fill and outline from this code :

<PolyStyle>
    <color>7f0000ff</color>
    <colorMode>normal</colorMode>
    <fill>1</fill>
    <outline>1</outline>
  </PolyStyle>

it's should look like :

<PolyStyle>
    <color>7f0000ff</color>
  </PolyStyle>

The result looks like : enter image description here

Upvotes: 0

Salas
Salas

Reputation: 71

Did you go through this list of supported elements? https://developers.google.com/kml/documentation/kmlelementsinmaps

I see that you are using some unsupported elements (e.g. altitudeMode). In theory it is supposed to fail silently if you do that, but it seems that it may affect overall result (see the answer to this issue).

I also think that's why the answer from @JeremyA1 may not work, since StyleMap is also not supported.

In any case, please, let us know how you solved it, as it would be very helpful.

Upvotes: 1

JA1
JA1

Reputation: 568

First you need the tag which you're missing. Try this updated code

<?xml version="1.0" encoding="utf-8"?>
<kml xmlns="http://www.opengis.net/kml/2.2">
 <Document>
    <StyleMap id="s1">
        <Pair>
            <key>normal</key>
            <styleUrl>#s1-temp</styleUrl>
        </Pair>
        <Pair>
            <key>highlight</key>
            <styleUrl>#s1-temp</styleUrl>
        </Pair>
    </StyleMap>
    <Style id="s1-temp">
        <IconStyle>
            <scale>1.0</scale>
            <Icon>
                <href>http://maps.google.com/mapfiles/kml/pushpin/ylw-pushpin.png</href>
            </Icon>
        </IconStyle>
        <PolyStyle>
            <color>7f0000ff</color>
            <outline>0</outline>
        </PolyStyle>
    </Style>
    <name>All isolation countries</name>
    <description>All isolation countries</description>
    <Placemark>
      <styleUrl>#s1-temp</styleUrl>
      <name>Indonesia</name>
      <Polygon>
      <tessellate>1</tessellate>
        <extrude>1</extrude>
        <altitudeMode>clampedToGround</altitudeMode>
        <outerBoundaryIs>
          <LinearRing>
            <coordinates>102.4918975830078,1.259721994400024,0 102.3088989257813,1.420554995536804,0 102.1374969482422,1.448055028915405,0 102.0785980224609,1.485000014305115,0 101.9944000244141,1.600000023841858,0 102.0065994262695,1.619166970252991,0 102.4349975585938,1.527500033378601,0 102.4779968261719,1.502221941947937,0 102.4954986572266,1.436308026313782,0 102.504997253418,1.273888945579529,0 102.4918975830078,1.259721994400024,0</coordinates>
          </LinearRing>
        </outerBoundaryIs>
      </Polygon>
    </Placemark>
    <Placemark>
      <styleUrl>#s1-temp</styleUrl>
      <name>Ecuador</name>
      <Polygon>
      <tessellate>1</tessellate>
        <extrude>1</extrude>
        <altitudeMode>clampedToGround</altitudeMode>
        <outerBoundaryIs>
          <LinearRing>
            <coordinates>-90.61167907714844,-0.3755556046962738,0 -90.77166748046875,-0.344166785478592,0 -90.87222290039063,-0.2652778923511506,0 -90.79332733154297,-0.149444505572319,0 -90.77362060546876,-0.1550000011920929,0 -90.58556365966797,-0.2455555945634842,0 -90.55029296875,-0.3091666996479035,0 -90.61167907714844,-0.3755556046962738,0</coordinates>
          </LinearRing>
        </outerBoundaryIs>
      </Polygon>
    </Placemark>
   </Document>
 </kml>` 

Upvotes: 0

Related Questions