Synthetic lines example

Synthetic lines example.

Performance results:

Device/Browser 200 lines 500 lines 1000 lines 2000 lines 5000 lines 10000 lines 20000 lines
Mac Book Air / Chrome 33 canary 60 fps 60 fps 60 fps 60 fps 60 fps 60 fps 60 fps
Mac Book Air / FireFox 25 60 fps 60 fps 60 fps 60 fps 60 fps 22 fps 6 fps
Mac Book Air / Safari 7 60 fps 60 fps 60 fps 40 fps 10 fps N/A N/A
iPhone 4S / iOS 7 / Safari 60 fps 33 fps 15 fps 5 fps N/A N/A N/A

vector
<!DOCTYPE html>
<html>
<head>
<title>Synthetic lines example</title>
<script src="https://code.jquery.com/jquery-1.11.2.min.js"></script>
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.5/css/bootstrap.min.css">
<script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.5/js/bootstrap.min.js"></script>
<link rel="stylesheet" href="http://openlayers.org/en/v3.9.0/css/ol.css" type="text/css">
<script src="http://openlayers.org/en/v3.9.0/build/ol.js"></script>

</head>
<body>
<div class="container-fluid">

<div class="row-fluid">
  <div class="span12">
    <div id="map" class="map"></div>
  </div>
</div>

</div>
<script>
var count = 10000;
var features = new Array(count);

var startPoint = [0, 0];
var endPoint;

var delta, deltaX, deltaY;
var signX = 1;
var signY = -1;

// Create a square spiral.
var i;
for (i = 0; i < count; ++i) {
  delta = (i + 1) * 2500;
  if (i % 2 === 0) {
    signY *= -1;
  } else {
    signX *= -1;
  }
  deltaX = delta * signX;
  deltaY = delta * signY;
  endPoint = [startPoint[0] + deltaX, startPoint[1] + deltaY];
  features[i] = new ol.Feature({
    'geometry': new ol.geom.LineString([startPoint, endPoint])
  });
  startPoint = endPoint;
}

var vector = new ol.layer.Vector({
  source: new ol.source.Vector({
    features: features
  }),
  style: new ol.style.Style({
    stroke: new ol.style.Stroke({
      color: '#666666',
      width: 1
    })
  })
});

var view = new ol.View({
  center: [0, 0],
  zoom: 0
});

var map = new ol.Map({
  layers: [vector],
  target: 'map',
  view: view
});

</script>
</body>
</html>