Search code examples
google-mapsgoogle-maps-api-3mapskml

How can I display custom ExtendedData in KML File?


I'm implementing a custom KML with different routes in Argentina.

I want display my custom ExtendedData, but dont work. Can someone tell me what is the problem please?

This is my code KML

<?xml version="1.0" encoding="UTF-8"?>
<kml xmlns="http://www.opengis.net/kml/2.2">
    <Document>
        <name>
            ROUTE 1
        </name>
        <Style id="info_rutas_arg">
            <BalloonStyle>
                <text>
                    <![CDATA[
                    Ruta $[nombre_ruta]
                    Tramo $[nombre_tramo] <br>
                    # $[id_lugar]
                    ]]>
                </text>
            </BalloonStyle>
        </Style>
        <open>
            1
        </open>
        <description>
            Unleash your creativity with the help of these examples!
        </description>
        <!-- 2806 -->
        <Placemark>
            <name>
                Ruta PROV. 63 - SAN JUAN
            </name>
            <StyleUrl>
                #info_rutas_arg
            </StyleUrl>
            <ExtendedData>
                <Data name="id_lugar">
                    <Value>
                        2806
                    </Value>
                </Data>
                <Data name="nombre_ruta">
                    <Value>
                        Ruta PROV. 63
                    </Value>
                </Data>
                <Data name="nombre_tramo">
                    <Value>
                        SAN JUAN
                    </Value>
                </Data>
            </ExtendedData>
            <MultiGeometry>
                <LineString>
                    <coordinates>
                        -68.2838,-31.4429 -68.2824,-31.4431 -68.2783,-31.4436 -68.2701,-31.4447 -68.2668,-31.4452 -68.2649,-31.4454 -68.2638,-31.4456 -68.2618,-31.4458
                    </coordinates>
                </LineString>
                <LineString>
                    <coordinates>
                        -68.331,-31.4371 -68.329,-31.4373 -68.3245,-31.4379 -68.3213,-31.4383 -68.3182,-31.4387
                    </coordinates>
                </LineString>
                <LineString>
                    <coordinates>
                        -68.4034,-31.4284 -68.4004,-31.4288 -68.3976,-31.4291 -68.3918,-31.4298 -68.3889,-31.4301 -68.386,-31.4305 -68.383,-31.4308 -68.3815,-31.431 -68.38,-31.4312
                    </coordinates>
                </LineString>
                <LineString>
                    <coordinates>
                        -68.4245,-31.4259 -68.4188,-31.4265 -68.4132,-31.4272 -68.4107,-31.4275 -68.4086,-31.4277 -68.4064,-31.428 -68.4034,-31.4284
                    </coordinates>
                </LineString>
                <LineString>
                    <coordinates>
                        -68.3182,-31.4387 -68.3121,-31.4394 -68.3091,-31.4398 -68.3056,-31.4402
                    </coordinates>
                </LineString>
                <LineString>
                    <coordinates>
                        -68.38,-31.4312 -68.3777,-31.4314 -68.3754,-31.4317 -68.3728,-31.432 -68.3675,-31.4327 -68.3618,-31.4334 -68.3589,-31.4338 -68.3563,-31.4341
                    </coordinates>
                </LineString>
                <LineString>
                    <coordinates>
                        -68.453,-31.4419 -68.4525,-31.4395 -68.4522,-31.4382 -68.4519,-31.437 -68.4517,-31.4364 -68.4515,-31.4356 -68.451,-31.434 -68.4508,-31.4328 -68.4505,-31.4316 -68.4503,-31.4309 -68.4501,-31.4305 -68.4497,-31.4295 -68.4495,-31.4289 -68.4495,-31.4283 -68.4494,-31.4279 -68.4494,-31.4275 -68.4494,-31.4272 -68.4494,-31.4259 -68.4494,-31.4251 -68.4493,-31.4249 -68.4493,-31.4247 -68.4492,-31.4246 -68.4491,-31.4246 -68.4487,-31.4243 -68.4484,-31.4241 -68.4479,-31.4238 -68.4477,-31.4236 -68.4476,-31.4236 -68.4474,-31.4235 -68.4471,-31.4235 -68.4467,-31.4235 -68.4455,-31.4236 -68.4443,-31.4237 -68.4432,-31.4238 -68.4409,-31.424 -68.4387,-31.4242 -68.4364,-31.4245 -68.432,-31.425 -68.4275,-31.4255 -68.4245,-31.4259
                    </coordinates>
                </LineString>
                <LineString>
                    <coordinates>
                        -68.4567,-31.4553 -68.453,-31.4419
                    </coordinates>
                </LineString>
                <LineString>
                    <coordinates>
                        -68.3056,-31.4402 -68.3,-31.4409 -68.2972,-31.4412 -68.2944,-31.4416 -68.2838,-31.4429
                    </coordinates>
                </LineString>
                <LineString>
                    <coordinates>
                        -68.3563,-31.4341 -68.35,-31.4349 -68.3437,-31.4356 -68.3374,-31.4364 -68.3361,-31.4365 -68.3349,-31.4367 -68.333,-31.4369 -68.3318,-31.437 -68.331,-31.4371
                    </coordinates>
                </LineString>
            </MultiGeometry>
        </Placemark>
    </Document>
</kml>

That is my KML code, and that is the result when I try that in MyMaps

This is the result that Google shows me:


Solution

  • The issue you're seeing is the KML is not valid. Tags in KML are case-sensitive. KML uses mixed-case tags sometimes starting with an uppercase letter and other times lowercase (e.g. <Data>, <value>, etc.) so you must verify the correct syntax. Displaying the KML in Google Earth Pro might help to check that it's correct and displays as you expect it to.

    The <Value> element must be lower-case <value> and the StyleUrl element must start with a lower-case letter; i.e. <styleUrl>.

    Change placemark to look like this:

    <Placemark>
        <name>Ruta PROV. 63 - SAN JUAN</name>
        <styleUrl>#info_rutas_arg</styleUrl>
        <ExtendedData>
            <Data name="id_lugar">
                <value>2806</value>
            </Data>
            ...
    </Placemark>
    

    Also for some reason the description on the Document parent container is preventing the placemark from showing so suggest removing the description element from the Document or just commenting it out.