Stili complessi per LineString con DrawOrder

Josh Livni, team delle API di Google Geo
Dicembre 2010

Obiettivo

Questo tutorial introduce alcuni nuovi elementi KML introdotti con Google Earth 6.0 e spiega come possono essere utilizzati per creare una cartografia complessa per gli stili di linea. Gli elementi che imparerai a conoscere sono <gx:physicalWidth>, <gx:outerColor>, <gx:outerWidth> e <gx:drawOrder>.

Introduzione

Prima del rilascio di Google Earth 6.0, la possibilità di definire stili cartografici complessi per le LineString era limitata. Ad esempio, se volessi creare uno stile per una strada in cui il centro della LineString avesse un colore diverso dai bordi, dovresti disegnare due LineString separate con larghezze diverse e anche in questo caso non potresti garantire l'ordine in cui vengono disegnate.

Gli esempi riportati di seguito mostrano come creare una strada. Innanzitutto, la strada avrà uno stile semplice. Poi aggiungerai un marciapiede. Infine, aggiungi un cavalcavia autostradale.

Una strada di base

Il primo elemento di interesse è <gx:physicalWidth>, che consente di impostare la larghezza di una LineString in metri anziché in pixel. Nel caso dell'esempio della strada, ciò significa che puoi impostare la larghezza della strada in modo che corrisponda alle immagini sottostanti, indipendentemente dall'altitudine da cui l'utente finale visualizza la strada. Man mano che guadagni quota, la strada diminuisce di pixel, creando un effetto in cui puoi vedere la LineString solo quando esegui uno zoom ravvicinato. Questa opzione può essere utile se non vuoi mettere in evidenza le strade secondarie da lontano o se vuoi assicurarti che la cartografia corrisponda sempre alle immagini satellitari.

<?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" xmlns:atom="http://www.w3.org/2005/Atom">
<Document>
  <name>Road Styling</name>
  <Style id="street">
    <LineStyle>
      <color>ff235523</color>
      <gx:physicalWidth>12</gx:physicalWidth>
    </LineStyle>
  </Style>
  <Placemark>
    <styleUrl>#street</styleUrl>
    <LineString>
      <coordinates>
      -122.2442883478408,37.4347536724074,0
      -122.2417741446485,37.43594997501623,0
      -122.2414951359056,37.43611878445952,0
      </coordinates>
    </LineString>
  </Placemark>
</Document>
</kml>

Quando modifichi l'altitudine della videocamera in Google Earth, nota come corrisponde sempre alla larghezza delle immagini sottostanti.

Aggiunta di marciapiedi

Ora puoi aggiungere gli elementi <gx:outerColor> e <gx:outerWidth> aggiungendo un colore verde chiaro ai bordi della strada per indicare i marciapiedi. Imposta il 25% dei pixel totali della strada in grigio chiaro.

<?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" xmlns:atom="http://www.w3.org/2005/Atom">
<Document>
  <name>Road Styling</name>
  <Style id="street_sidewalk">
    <LineStyle>
      <color>ff235523</color>
      <gx:physicalWidth>12</gx:physicalWidth>
      <gx:outerColor>ff55ff55</gx:outerColor>
      <gx:outerWidth>0.25</gx:outerWidth>
    </LineStyle>
  </Style>
  <Placemark>
    <styleUrl>#street_sidewalk</styleUrl>
    <LineString>
      <coordinates>
      -122.2442883478408,37.4347536724074,0
      -122.2417741446485,37.43594997501623,0
      -122.2414951359056,37.43611878445952,0
      </coordinates>
    </LineString>
  </Placemark>
</Document>
</kml>

Poiché la larghezza della strada è stata impostata su 12 metri, il valore di 0,25 per outerWidth significa che 3 metri di questa larghezza saranno impostati su un verde più chiaro (circa 1,5 metri su ciascun lato della strada).

Un cavalcavia autostradale

Ora che hai una strada di base, è il momento di affrontare un cavalcavia autostradale. Questo sarà di colore arancione chiaro con una linea mediana arancione più scuro. L'aggiunta fondamentale è l'inclusione di un <gx:drawOrder> di 1 (il valore predefinito è 0) nel <LineSring> per garantire che l'autostrada venga visualizzata sopra la strada. Se stai creando uno svincolo autostradale più complesso (o qualsiasi cartografia che richieda più di due LineString sovrapposte), puoi semplicemente aggiungere un valore più alto a <gx:drawOrder> per quello che vuoi visualizzare in primo piano.

<?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" xmlns:atom="http://www.w3.org/2005/Atom">
<Document>
  <name>Road Styling</name>
  <Style id="street_sidewalk">
    <LineStyle>
      <color>ff235523</color>
      <gx:physicalWidth>10</gx:physicalWidth>
      <gx:outerColor>ff55ff55</gx:outerColor>
      <gx:outerWidth>0.25</gx:outerWidth>
    </LineStyle>
  </Style>
  <Style id="highway">
    <LineStyle>
      <color>cc1447ff</color>
      <gx:physicalWidth>20</gx:physicalWidth>
      <gx:outerColor>cc1473ff</gx:outerColor>
      <gx:outerWidth>0.75</gx:outerWidth>
    </LineStyle>
  </Style>
  <Placemark>
    <styleUrl>#street_sidewalk</styleUrl>
    <LineString>
      <coordinates>
     -122.2442883478408,37.4347536724074,0
     -122.2417741446485,37.43594997501623,0
     -122.2414951359056,37.43611878445952,0
      </coordinates>
    </LineString>
  </Placemark>
  <Placemark>
    <styleUrl>#highway</styleUrl>
    <LineString>
    <gx:drawOrder>1</gx:drawOrder>
    <coordinates>
      -122.2442692500139,37.43634904345254,0
      -122.2415928723012,37.43416417520744,0
    </coordinates>
    </LineString>
  </Placemark>
</Document>
</kml>

Passaggi successivi

La possibilità di descrivere una singola LineString con più colori, combinata con il controllo dell'ordine di rendering, consente di creare una cartografia delle linee complessa, cosa che prima non era possibile. Che tu stia costruendo un cavalcavia autostradale o un progetto di arte astratta, divertiti con queste regole di stile.