Skip to content

Instantly share code, notes, and snippets.

@alperdincer
Created August 29, 2013 11:41
Show Gist options
  • Save alperdincer/6377014 to your computer and use it in GitHub Desktop.
Save alperdincer/6377014 to your computer and use it in GitHub Desktop.
Geo API test code for vector features.
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>Geo API Performance Test</title>
<style type="text/css">
html { height: 100% }
body { height: 100%; margin: 5px; }
#mapDiv { width: 800px; height: 500px; }
</style>
<link rel="stylesheet" href="libs/olv2/theme/default/style.css" type="text/css">
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.10.2/jquery.min.js"></script>
<script src="libs/olv2/OpenLayers.js" type="text/javascript"></script>
<script type="text/javascript">
var iterations = 30;
var removeGeom = false;
var map, polygon, vectorLayer;
//var fileListGeoJSON = ['geojson_40k.js', 'geojson_10k.js', 'geojson_5k.js', 'geojson_2k.js', 'geojson_1k.js', 'geojson_500.js'];
var fileListGeoJSON = ['geojson_40k.js'];
function initMap() {
var layer = new OpenLayers.Layer.WMS( "OpenLayers WMS",
"http://vmap0.tiles.osgeo.org/wms/vmap0",
{layers: 'basic'} );
var centerTr = new OpenLayers.LonLat(32.8252, 39.9078);
map = new OpenLayers.Map({
div: document.getElementById("mapDiv"),
numZoomLevels: 13,
controls: [
new OpenLayers.Control.Navigation({
dragPanOptions: {
enableKinetic: true
}
}),
new OpenLayers.Control.Zoom()
],
layers: [layer],
center: centerTr,
zoom: 6
});
var renderer = OpenLayers.Util.getParameters(window.location.href).renderer;
renderer = (renderer) ? [renderer] : OpenLayers.Layer.Vector.prototype.renderers;
var layer_style = OpenLayers.Util.extend({}, OpenLayers.Feature.Vector.style['default']);
layer_style.fillOpacity = 0.2;
layer_style.graphicOpacity = 1;
vectorLayer = new OpenLayers.Layer.Vector("Simple Geometry", {
style: layer_style,
renderers: renderer
});
map.addLayer(vectorLayer);
}
function drawGeom(path) {
if(vectorLayer.features.length > 0)
removeGeometry();
var linearRing = new OpenLayers.Geometry.LinearRing(path);
var polygonFeature = new OpenLayers.Feature.Vector(new OpenLayers.Geometry.Polygon([linearRing]));
vectorLayer.addFeatures([polygonFeature]);
}
function drawGeometryGeoJSON(geom) {
if (geom.type == "Polygon") {
var pointCount = geom.coordinates[0].length;
var areaPath = [];
for (var i=0; i < pointCount; i++) {
var tempLatLng = new OpenLayers.Geometry.Point(geom.coordinates[0][i][0], geom.coordinates[0][i][1]);
areaPath.push(tempLatLng);
}
drawGeom(areaPath);
}
}
function removeGeometry() {
vectorLayer.removeAllFeatures();
}
function startTests(type) {
var fileList = fileListGeoJSON;
if (type == 1)
fileList = fileListWKT;
for (var i=0; i < fileList.length; i++) {
$.getJSON("_data/" + fileList[i], function(data) {
console.log("File Name : " + this.url);
var totalTime = 0;
for (var j=0; j < iterations; j++){
var start = +new Date();
if (type == 0)
drawGeometryGeoJSON(data.features[0].geometry);
var end = +new Date();
var diff = end - start;
totalTime = totalTime + diff;
if(removeGeom)
removeGeometry();
}
console.log(this.url + " file, Average time difference : " + (totalTime / iterations));
});
}
}
</script>
</head>
<body onload="initMap();">
<b>Performance Tests - Openlayers v2.13.1</b><br>
<a href="javascript:startTests(0);">Start GeoJSON Tests</a><br>
<div id="mapDiv"></div>
</body>
</html>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment