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 =...