<!doctype html>
<html>
    <head>
        <title>js-shapefile-to-geojson Demo Page</title>
        <style>
            html, body {
                height: 100%;
                width: 100%;
            }
            #map {
                height: 400px;
                background-color: #eee;
            }
        </style>
    </head>
    <body>
         <a href="http://github.com/wavded/js-shapefile-to-geojson"><img style="position: absolute; top: 0; right: 0; border: 0;" src="http://s3.amazonaws.com/github/ribbons/forkme_right_darkblue_121621.png" alt="Fork me on GitHub" /></a>
        <h2>js-shapefile-to-geojson Demo Page</h2>
        <p>Pure client-side JavaScript (no server side code) parsing of shapefiles and dbase files to GeoJSON format displayed using OpenLayers.</p>
        <div id="map"></div>
        <p>View project at <a href="http://github.com/wavded/js-shapefile-to-geojson">http://github.com/wavded/js-shapefile-to-geojson</a>.
        <script src="http://rs1.adc4gis.com/js/openlayers/2.9.1/OpenLayers-Proj4.js"></script>
        <script src="stream.js"></script>
        <script src="shapefile.js"></script>
        <script src="dbf.js"></script>
        <script type="text/javascript">
            OpenLayers._getScriptLocation = function(){
                return "http://rs1.adc4gis.com/js/openlayers/2.9.1/";
            };

            var map = new OpenLayers.Map("map",{allOverlays: true}),
                parser = new OpenLayers.Format.GeoJSON(),
                vector = new OpenLayers.Layer.Vector("Converted")

            map.addLayer(vector);

            var onchange = function(e) {
                var shpFile = document.getElementById('shp').files[0];
                var dbfFile = document.getElementById('dbf').files[0];
                if (shpFile) {
                    var opts = { shp: shpFile };
                    if (dbfFile) {
                        opts['dbf'] = dbfFile;
                    }
                    shapefile = new Shapefile(opts, function(data){
                        var features = parser.read(data.geojson);
                        vector.addFeatures(features);
                        map.zoomToExtent(vector.getDataExtent());
                        console.log(data);
                    });
                }
            }

            document.body.onload = function(){
                document.getElementById('shp').addEventListener('change', onchange, false);
                document.getElementById('dbf').addEventListener('change', onchange, false);
            }
        </script>
        <br>
        <br>
        .shp <input id="shp" type="file" name=".shp" />
        .dbf <input id="dbf" type="file" name=".dbf" />
    </body>
</html>