Openlayers Onemap Sample

by aaronjxz

HTML

<script src="http://svn.osgeo.org/metacrs/proj4js/trunk/lib/proj4js-combined.js"></script>
<script src="http://www.openlayers.org/api/OpenLayers.js"></script>
<link rel="stylesheet" href="http://www.openlayers.org/api/theme/default/style.tidy.css">
<div id='my_map'></div>

CSS

html { height: 100%; }
body { margin: 0; padding: 0; height: 100%; }
#my_map { height: 512px; width: 512px; }

JavaScript

Proj4js.defs["EPSG:24500"] = "+proj=cass +lat_0=1.287646666666667 +lon_0=103.8530022222222 +x_0=30000 +y_0=30000 +a=6377304.063 +b=6356103.038993155 +towgs84=-11,851,5,0,0,0,0 +units=m +no_defs";

OpenLayers.Util.onImageLoadErrorColor = 'transparent';
var WGS84, SMERC;
WGS84 = new OpenLayers.Projection('EPSG:4326');
SMERC = new OpenLayers.Projection('EPSG:24500');

var toMerc = OpenLayers.Projection.addTransform("EPSG:4326", "EPSG:24500", function ( _obj ) { return new OpenLayers.Geometry.Point( _obj.x, _obj.y ).transform( WGS84, SMERC); });

var toLL = OpenLayers.Projection.addTransform("EPSG:24500", "EPSG:4326", function ( _obj ) { return new OpenLayers.Geometry.Point( _obj.x, _obj.y ).transform( SMERC, WGS84); });

OpenLayers.Layer.ZYX = OpenLayers.Class(OpenLayers.Layer.Grid, {
	isBaseLayer: true,
	sphericalMercator: false,
	initialize: function(name, url, options) {
		if (options && options.sphericalMercator || this.sphericalMercator) {
			options = OpenLayers.Util.extend({
				maxExtent: new OpenLayers.Bounds(-128 * 156543.0339, -128 * 156543.0339, 128 * 156543.0339, 128 * 156543.0339 ),
				maxResolution: 156543.0339,
				numZoomLevels: 19,
				units: "m", projection: "EPSG:900913", originX: 0, originY: 0
			}, options);
		}
		url = url || this.url;
		name = name || this.name;
		var newArguments = [name, url, {}, options];
		OpenLayers.Layer.Grid.prototype.initialize.apply(this, newArguments);
	},
	clone: function (obj) {
		if (obj === null) { obj = new OpenLayers.Layer.ZYX(this.name, this.url, this.options); }
		obj = OpenLayers.Layer.HTTPRequest.prototype.clone.apply(this, [obj]);
		if (this.tileSize !== null) { obj.tileSize = this.tileSize.clone(); }
		obj.grid = [];
		return obj;
	},
	getURL: function (bounds) {
		var res = this.map.getResolution();
		var z = this.map.getZoom();
		var limit = Math.pow(2, z);
		var xoffset = 0; var yoffset = 0;
		var x = (xoffset ) + Math.round((bounds.left - this.maxExtent.left) / (res * this.tileSize.w));
		var y =...