pattern_ol_tree

pattern_ol_tree

by kalifa17

HTML

<link rel="stylesheet" href="http://openlayers.org/en/v3.15.1/css/ol.css">
<script src="http://openlayers.org/en/v3.15.1/build/ol.js"></script>
<div id="info">&nbsp;</div>
<div><img id="tree_icon" src="http://www.freeiconspng.com/uploads/small-tree-icon-2.jpg" withd=100 height=100></div>  
<div><canvas id="myCanvas" width="100" height="100" style="border:1px solid #d3d3d3;"></div>
<div id="map" class="map"></div>

JavaScript

function makePattern() {
	var cnv = document.createElement('canvas');
  var ctx = cnv.getContext('2d');
  cnv.width = 6;
  cnv.height = 6;
  ctx.fillStyle = 'rgb(255, 0, 0)';
  
  for(var i = 0; i < 3; ++i) {
  	ctx.fillRect(i, i, 1, 1);
  }
  
  return ctx.createPattern(cnv, 'repeat');
}

function makePattern4(){
    var img = document.getElementById('tree_icon');
    var c = document.getElementById("myCanvas");
    var ctx = c.getContext("2d");
    //ctx.clearRect(0, 0, c.width, c.height);
    // ctx.clearRect(0, 0, 10, 10);
    var pat = ctx.createPattern(img, 'repeat');
    ctx.rect(0, 0, 100, 100);
    ctx.fillStyle = pat;
    ctx.fill();
    ctx.globalAlpha = 0.5;
    // return pat;
    return ctx.createPattern(c, 'repeat');
 };


var map = new ol.Map({
  layers: [
    new ol.layer.Tile({
      source: new ol.source.MapQuest({layer: 'sat'})
    }),
    new ol.layer.Image({
      source: new ol.source.ImageVector({
        source: new ol.source.Vector({
          url: 'http://openlayers.org/en/master/examples/data/geojson/countries.geojson',
          format: new ol.format.GeoJSON()
        }),
        style: new ol.style.Style({
          fill: new ol.style.Fill({
            //color: 'rgba(255, 255, 255, 0.6)'
            color: makePattern4()
          }),
          stroke: new ol.style.Stroke({
            color: '#319FD3',
            width: 1
          })
        })
      })
    })
  ],
  target: 'map',
  view: new ol.View({
    center: [0, 0],
    zoom: 1
  })
});

var featureOverlay = new ol.layer.Vector({
  source: new ol.source.Vector(),
  map: map,
  style: new ol.style.Style({
    stroke: new ol.style.Stroke({
      color: '#f00',
      width: 1
    }),
    fill: new ol.style.Fill({
      color: 'rgba(255,0,0,0.1)'
    })
  })
});

var highlight;
var displayFeatureInfo = function(pixel) {

  var feature = map.forEachFeatureAtPixel(pixel, function(feature) {
    return feature;
  });

  var info = document.getElementById('info');
  if (feature) {
...