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 |
<!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>