Neste post vamos aprender como interagir com o mapa, e adicionar feições a ele. Nesta nova versão do OL3, os recursos de interação podem ser encontrados na classe ol.interaction.Draw.

Vamos começar com o exemplo abaixo. Aba seu arquivo map.html em seu editor de texto e certifique-se de que fique parecido com ele:

<!doctype html>
<html lang="en">
  <head>
    <link rel="stylesheet" href="ol3/ol.css" type="text/css">
    <style>
    #map {
      height: 256px;
      width: 512px;
    }
    </style>
    <script src="ol3/ol.js" type="text/javascript"></script>
    <title>OpenLayers 3 example</title>
  </head>
  <body>
    <h1>My Map</h1>
    <div id="map"></div>
    <script type="text/javascript">
      var source = new ol.source.GeoJSON({
        url: 'data/layers/7day-M2.5.json'
      });
      var draw = new ol.interaction.Draw({
        source: source,
        type: 'Point'
      });
      var map = new ol.Map({
        interactions: ol.interaction.defaults().extend([draw]),
        target: 'map',
        layers: [
          new ol.layer.Tile({
            title: "Global Imagery",
            source: new ol.source.TileWMS({
              url: 'http://maps.opengeo.org/geowebcache/service/wms',
              params: {LAYERS: 'bluemarble', VERSION: '1.1.1'}
            })
          }),
          new ol.layer.Vector({
            title: 'Earthquakes',
            source: source,
            style: new ol.style.Style({
              image: new ol.style.Circle({
                radius: 5,
                fill: new ol.style.Fill({
                  color: '#0000FF'
                }),
                stroke: new ol.style.Stroke({
                  color: '#000000'
                })
              })
            })
          })
        ],
        view: new ol.View({
          projection: 'EPSG:4326',
          center: [0, 0],
          zoom: 1
        })
      });
    </script>
  </body>
</html>

Salve as alterações e abra a página no seu navegador: @servidor@/map.html. Para ver a funcionalidade de desenho em ação, clique no mapa para adicionar um novo recurso:

draw1

Para realizar as modificações nas características das geometrias, devemos utilizar a classe ol.interaction.Select juntamenter a classe ol.interaction.Modify. Elas compartilham um conjunto comum (ol.Collection) de recursos. Os recursos selecionados através da classe ol.interaction.Select se tornam candidatos a modificações pela classe ol.interaction.Modify.

Agora abra seu arquivo map.html e realize as alterações de acordo com o código abaixo:

<!doctype html>
<html lang="en">
  <head>
    <link rel="stylesheet" href="ol3/ol.css" type="text/css">
    <style>
    #map {
      height: 256px;
      width: 512px;
    }
    </style>
    <script src="ol3/ol.js" type="text/javascript"></script>
    <title>OpenLayers 3 example</title>
  </head>
  <body>
    <h1>My Map</h1>
    <div id="map"></div>
    <script type="text/javascript">
      var source = new ol.source.GeoJSON({
        url: 'data/layers/7day-M2.5.json'
      });
      var style = new ol.style.Style({
        image: new ol.style.Circle({
          radius: 7,
            fill: new ol.style.Fill({
            color: [0, 153, 255, 1]
          }),
          stroke: new ol.style.Stroke({
            color: [255, 255, 255, 0.75],
            width: 1.5
          })
        }),
        zIndex: 100000
      });
      var select = new ol.interaction.Select({style: style});
      var modify = new ol.interaction.Modify({
        features: select.getFeatures()
      });
      var map = new ol.Map({
        interactions: ol.interaction.defaults().extend([select, modify]),
        target: 'map',
        layers: [
          new ol.layer.Tile({
            title: "Global Imagery",
            source: new ol.source.TileWMS({
              url: 'http://maps.opengeo.org/geowebcache/service/wms',
              params: {LAYERS: 'bluemarble', VERSION: '1.1.1'}
            })
          }),
          new ol.layer.Vector({
            title: 'Earthquakes',
            source: source,
            style: new ol.style.Style({
              image: new ol.style.Circle({
                radius: 5,
                fill: new ol.style.Fill({
                  color: '#0000FF'
                }),
                stroke: new ol.style.Stroke({
                  color: '#000000'
                })
              })
            })
          })
        ],
        view: new ol.View({
          projection: 'EPSG:4326',
          center: [0, 0],
          zoom: 1
        })
      });
    </script>
  </body>
</html>

Salve as alterações no seu arquivo map.html e abra a página no seu navegador. Para ver o recurso em ação, use o clique do mouse para selecionar um tremor de terra e arraste para mover o ponto.

No próximo post vamos apresentar como você pode criar o estilo da sua camada diretamente pelo OpenLayers, através de javascript.