KaMap layer now sublasses initTiles, to implement the kamap 0-based tiling scheme instead of the OpenLayers/WW -180,-90 method. This means that there are no longer any restrictions on using ka-Map with other layers! woohoo! You can use ka-map on top of WorldWind, or with another ka-map layer, even if it has differently sized tiles. yay!
git-svn-id: http://svn.openlayers.org/trunk/openlayers@764 dc9f47b5-9b13-0410-9fdd-eb0c1a62fdaf
This commit is contained in:
+3
-1
@@ -17,6 +17,8 @@
|
|||||||
"http://labs.metacarta.com/wms/vmap0?", {layers: 'basic'} );
|
"http://labs.metacarta.com/wms/vmap0?", {layers: 'basic'} );
|
||||||
var ka_wms = new OpenLayers.Layer.KaMap( "KaMap",
|
var ka_wms = new OpenLayers.Layer.KaMap( "KaMap",
|
||||||
"http://freemap.in/~crschmidt/ka-map/ka-map-0.2-20060208/htdocs/tile.php?" , { map: 'gmap', g: 'roads' }, 'degrees', 72 );
|
"http://freemap.in/~crschmidt/ka-map/ka-map-0.2-20060208/htdocs/tile.php?" , { map: 'gmap', g: 'roads' }, 'degrees', 72 );
|
||||||
|
var tiger = new OpenLayers.Layer.KaMap( "KaMap", "http://maps.dmsolutions.ca/demo/us_streets/tile.php", {map:'tiger04', g:'__base__'});
|
||||||
|
tiger.setTileSize(new OpenLayers.Size(300,300));
|
||||||
var jpl_wms = new OpenLayers.Layer.WMS( "NASA Global Mosaic",
|
var jpl_wms = new OpenLayers.Layer.WMS( "NASA Global Mosaic",
|
||||||
"http://wms.jpl.nasa.gov/wms.cgi",
|
"http://wms.jpl.nasa.gov/wms.cgi",
|
||||||
{layers: "modis,global_mosaic"});
|
{layers: "modis,global_mosaic"});
|
||||||
@@ -24,7 +26,7 @@
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
map.addLayers([jpl_wms, ka_wms]);
|
map.addLayers([jpl_wms, ka_wms, tiger]);
|
||||||
map.addControl(new OpenLayers.Control.LayerSwitcher());
|
map.addControl(new OpenLayers.Control.LayerSwitcher());
|
||||||
map.setCenter(new OpenLayers.LonLat(0, 0), 0);
|
map.setCenter(new OpenLayers.LonLat(0, 0), 0);
|
||||||
}
|
}
|
||||||
|
|||||||
+5
-2
@@ -11,11 +11,14 @@
|
|||||||
<script type="text/javascript">
|
<script type="text/javascript">
|
||||||
<!--
|
<!--
|
||||||
function init(){
|
function init(){
|
||||||
var map = new OpenLayers.Map('map', {'maxResolution': 1.2/4, controls:[]});
|
var map = new OpenLayers.Map('map', {'maxResolution': 1.40625/4, controls:[]});
|
||||||
|
|
||||||
var ka_wms = new OpenLayers.Layer.KaMap( "KaMap", "http://maps.dmsolutions.ca/demo/us_streets/tile.php", {map:'tiger04', g:'__base__'});
|
var ka_wms = new OpenLayers.Layer.KaMap( "KaMap", "http://maps.dmsolutions.ca/demo/us_streets/tile.php", {map:'tiger04', g:'__base__'});
|
||||||
ka_wms.setTileSize(new OpenLayers.Size(300,300));
|
ka_wms.setTileSize(new OpenLayers.Size(300,300));
|
||||||
map.addLayers([ka_wms]); // , ka_wms, kamap_wms]);
|
var jpl_wms = new OpenLayers.Layer.WMS( "NASA Global Mosaic",
|
||||||
|
"http://wms.jpl.nasa.gov/wms.cgi",
|
||||||
|
{layers: "modis,global_mosaic"});
|
||||||
|
map.addLayers([jpl_wms,ka_wms]); // , ka_wms, kamap_wms]);
|
||||||
map.addControl(new OpenLayers.Control.LayerSwitcher());
|
map.addControl(new OpenLayers.Control.LayerSwitcher());
|
||||||
map.addControl(new OpenLayers.Control.MouseToolbar());
|
map.addControl(new OpenLayers.Control.MouseToolbar());
|
||||||
map.addControl(new OpenLayers.Control.PanZoomBar());
|
map.addControl(new OpenLayers.Control.PanZoomBar());
|
||||||
|
|||||||
@@ -55,6 +55,69 @@ OpenLayers.Layer.KaMap.prototype =
|
|||||||
return new OpenLayers.Tile.Image(this, position, bounds,
|
return new OpenLayers.Tile.Image(this, position, bounds,
|
||||||
url, this.tileSize);
|
url, this.tileSize);
|
||||||
},
|
},
|
||||||
|
_initTiles:function() {
|
||||||
|
|
||||||
|
//first of all, clear out the main div
|
||||||
|
this.div.innerHTML = "";
|
||||||
|
|
||||||
|
//now clear out the old grid and start a new one
|
||||||
|
this.clearGrid();
|
||||||
|
this.grid = new Array();
|
||||||
|
|
||||||
|
var viewSize = this.map.getSize();
|
||||||
|
var bounds = this.map.getExtent();
|
||||||
|
var extent = this.map.getFullExtent();
|
||||||
|
var resolution = this.map.getResolution();
|
||||||
|
var tilelon = resolution*this.tileSize.w;
|
||||||
|
var tilelat = resolution*this.tileSize.h;
|
||||||
|
|
||||||
|
var offsetlon = bounds.left;
|
||||||
|
var tilecol = Math.floor(offsetlon/tilelon);
|
||||||
|
var tilecolremain = offsetlon/tilelon - tilecol;
|
||||||
|
var tileoffsetx = -tilecolremain * this.tileSize.w;
|
||||||
|
var tileoffsetlon = tilecol * tilelon;
|
||||||
|
|
||||||
|
var offsetlat = bounds.top;
|
||||||
|
var tilerow = Math.ceil(offsetlat/tilelat);
|
||||||
|
var tilerowremain = tilerow - offsetlat/tilelat;
|
||||||
|
var tileoffsety = -(tilerowremain+1) * this.tileSize.h;
|
||||||
|
var tileoffsetlat = tilerow * tilelat;
|
||||||
|
|
||||||
|
tileoffsetx = Math.round(tileoffsetx); // heaven help us
|
||||||
|
tileoffsety = Math.round(tileoffsety);
|
||||||
|
|
||||||
|
this.origin = new OpenLayers.Pixel(tileoffsetx,tileoffsety);
|
||||||
|
|
||||||
|
var startX = tileoffsetx;
|
||||||
|
var startLon = tileoffsetlon;
|
||||||
|
|
||||||
|
do {
|
||||||
|
var row = new Array();
|
||||||
|
this.grid.append(row);
|
||||||
|
tileoffsetlon = startLon;
|
||||||
|
tileoffsetx = startX;
|
||||||
|
do {
|
||||||
|
var tileBounds = new OpenLayers.Bounds(tileoffsetlon,
|
||||||
|
tileoffsetlat,
|
||||||
|
tileoffsetlon+tilelon,
|
||||||
|
tileoffsetlat+tilelat);
|
||||||
|
|
||||||
|
var tile = this.addTile(tileBounds,
|
||||||
|
new OpenLayers.Pixel(tileoffsetx - parseInt(this.map.layerContainerDiv.style.left),
|
||||||
|
tileoffsety - parseInt(this.map.layerContainerDiv.style.top))
|
||||||
|
);
|
||||||
|
tile.draw((this.params.TRANSPARENT == 'true'));
|
||||||
|
row.append(tile);
|
||||||
|
|
||||||
|
tileoffsetlon += tilelon;
|
||||||
|
tileoffsetx += this.tileSize.w;
|
||||||
|
} while (tileoffsetlon < bounds.right)
|
||||||
|
|
||||||
|
tileoffsetlat -= tilelat;
|
||||||
|
tileoffsety += this.tileSize.h;
|
||||||
|
} while(tileoffsetlat > bounds.bottom - tilelat)
|
||||||
|
|
||||||
|
},
|
||||||
/** @final @type String */
|
/** @final @type String */
|
||||||
CLASS_NAME: "OpenLayers.Layer.KaMap"
|
CLASS_NAME: "OpenLayers.Layer.KaMap"
|
||||||
});
|
});
|
||||||
|
|||||||
Reference in New Issue
Block a user