Stili complessi per LineStrings con DrawOrder

Josh Livni, team delle API di Google Geo
Dicembre 2010

Obiettivo

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

Introduzione

Prima del rilascio di Google Earth 6.0, esisteva una limitata capacità di definire stili cartografici complessi per LineStrings. Ad esempio, se volessi creare uno stile per una strada, in cui il centro di LineString aveva un colore diverso rispetto ai bordi, dovresti disegnare due LineString separate con larghezze diverse e, in tal caso, non potresti garantire l'ordine in cui verrà tracciata.

I seguenti esempi illustrano come creare una strada. Innanzitutto, la strada avrà uno stile semplice. Poi aggiungerai un marciapiede. Infine, aggiungerai un cavalcavia.

Una strada di base

Il primo elemento di interesse è <gx:physicalWidth>, che ti consente di impostare la larghezza di una LineString in metri, anziché in pixel. Nel nostro esempio, puoi impostare la larghezza della strada in modo che corrisponda alle immagini sottostanti, indipendentemente dall'altitudine a cui l'utente finale visualizza la strada. Man mano che aumenti la quota, la strada diminuisce in pixel, creando un effetto che ti consente di visualizzare il valore LineString solo quando aumenti lo zoom. Ciò può essere utile se non vuoi enfatizzare le piccole strade da una certa distanza o 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>

Man mano che modifichi l'altitudine della fotocamera in Google Earth, puoi notare in che modo si avvicina sempre la larghezza delle immagini sottostanti.

Aggiungere marciapiedi

Ora puoi aggiungere gli elementi <gx:outerColor> e <gx:outerWidth> aggiungendo una luce verde 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 era impostata su 12 metri, il valore di 0,25 per la larghezza esterna significa che 3 metri di quella larghezza verranno 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 il cavalcavia. Questo colore sarà di colore arancione chiaro con una linea mediana arancione più scuro. L'aggiunta principale qui è includere un elemento <gx:drawOrder> di 1 (il valore predefinito è 0) in <LineSring> per garantire che l'autostrada venga visualizzata nella parte superiore della strada. Se stai creando uno scambio autostradale più complesso (o una cartografia che richiede più di due LineStrings sovrapposte), puoi semplicemente aggiungere un valore più alto al <gx:drawOrder> per quello che vuoi visualizzare in alto.

<?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 un singolo elemento LineString con più colori, combinato con il controllo sull'ordine di rendering ti consente di creare una cartografia complessa che non era possibile in precedenza. Che tu stia realizzando un cavalcavia dell'autostrada o un progetto artistico astratto, divertiti con queste regole di stile!