Still haven't got this one to work, any help??
On Dec 16, 9:39 pm, thaiboxer <[email protected]> wrote:
> function myMapConstructor(div) {
> var map = new GMap2(div);
> map.setCenter(new GLatLng(35.21196570103912, -80.95001220703125),
> 4);
> map.addControl(new GLargeMapControl());
> map.enableScrollWheelZoom();
> map.setMapType(G_NORMAL_MAP);
> return map;
> }
>
> i have been trying to generate the function above but with the custom
> map tiling script below with no success. I figure its better to ask
> here (vs javascript forum) because you guys are so good with this
> stuff & know what exhibit requires.
>
> thanks, jw
>
> var centreLat=0.0;
> var centreLon=0.0;
> var initialZoom=2;
> var imageWraps=true; //SET THIS TO false TO PREVENT THE IMAGE
> WRAPPING AROUND
> var map; //the GMap2 itself
>
> /////////////////////
> //Custom projection
> /////////////////////
> function CustomProjection(a,b){
> this.imageDimension=65536;
> this.pixelsPerLonDegree=[];
> this.pixelOrigin=[];
> this.tileBounds=[];
> this.tileSize=256;
> this.isWrapped=b;
> var b=this.tileSize;
> var c=1;
> for(var d=0;d<a;d++){
> var e=b/2;
> this.pixelsPerLonDegree.push(b/360);
> this.pixelOrigin.push(new GPoint(e,e));
> this.tileBounds.push(c);
> b*=2;
> c*=2
> }
> }
>
> CustomProjection.prototype=new GProjection();
>
> CustomProjection.prototype.fromLatLngToPixel=function(latlng,zoom)
> {
> var c=Math.round(this.pixelOrigin[zoom].x+latlng.lng()
> *this.pixelsPerLonDegree[zoom]);
> var d=Math.round(this.pixelOrigin[zoom].y+(-2*latlng.lat())
> *this.pixelsPerLonDegree[zoom]);
> return new GPoint(c,d)
> };
>
> CustomProjection.prototype.fromPixelToLatLng=function
> (pixel,zoom,unbounded){
> var d=(pixel.x-this.pixelOrigin[zoom].x)/
> this.pixelsPerLonDegree[zoom];
> var e=-0.5*(pixel.y-this.pixelOrigin[zoom].y)/
> this.pixelsPerLonDegree[zoom];
> return new GLatLng(e,d,unbounded)
> };
>
> CustomProjection.prototype.tileCheckRange=function
> (tile,zoom,tilesize){
> var tileBounds=this.tileBounds[zoom];
> if (tile.y<0 || tile.y >= tileBounds) {return false;}
> if (this.isWrapped) {
> if (tile.x<0 || tile.x>=tileBounds) {
> tile.x = tile.x%tileBounds;
> if (tile.x < 0) {tile.x+=tileBounds}
> }
> }
> else {
> if (tile.x<0 || tile.x>=tileBounds) {return false;}
> }
> return true;
> }
>
> CustomProjection.prototype.getWrapWidth=function(zoom) {
> return this.tileBounds[zoom]*this.tileSize;
> }
> ////////////////////////////////////////////////////////////////////////////
>
> function customGetTileURL(a,b) {
> //converts tile x,y into keyhole string
>
> var c=Math.pow(2,b);
>
> var d=a.x;
> var e=a.y;
> var f="t";
> for(var g=0;g<b;g++){
> c=c/2;
> if(e<c){
> if(d<c){f+="q"}
> else{f+="r";d-=c}
> }
> else{
> if(d<c){f+="t";e-=c}
> else{f+="s";d-=c;e-=c}
> }
> }
> return "floorplan-tiles/"+f+".jpg"
> }
>
> function getWindowHeight() {
> if (window.self&&self.innerHeight) {
> return self.innerHeight;
> }
> if
> (document.documentElement&&document.documentElement.clientHeight) {
> return document.documentElement.clientHeight;
> }
> return 0;
> }
>
> function resizeMapDiv() {
> //Resize the height of the div containing the map.
> //Do not call any map methods here as the resize is called
> before the map is created.
> var d=document.getElementById("map");
> var offsetTop=0;
> for (var elem=d; elem!=null; elem=elem.offsetParent) {
> offsetTop+=elem.offsetTop;
> }
> var height=getWindowHeight()-offsetTop-16;
> if (height>=0) {
> d.style.height=height+"px";
> }
> }
>
> function load() {
> if (GBrowserIsCompatible()) {
> resizeMapDiv();
> var copyright = new GCopyright(1,
> new GLatLngBounds(new GLatLng(-90,
> -180),
> new GLatLng(90, 180)),
> 0,
> "<a href=\"http://www.casa.ucl.ac.uk
> \">CASA</a>");
> var copyrightCollection = new GCopyrightCollection
> ("GMapImgCutter");
> copyrightCollection.addCopyright(copyright);
>
> //create a custom picture layer
> var pic_tileLayers = [ new GTileLayer(copyrightCollection , 0,
> 17)];
> pic_tileLayers[0].getTileUrl = customGetTileURL;
> pic_tileLayers[0].isPng = function() { return false; };
> pic_tileLayers[0].getOpacity = function() { return 1.0; };
> var proj=new CustomProjection(6,imageWraps);
> var pic_customMap = new GMapType(pic_tileLayers, proj, "Pic",
> {maxResolution:5, minResolution:0, errorMessage:"Data not
> available"});
>
> //Now create the custom map. Would normally be
> G_NORMAL_MAP,G_SATELLITE_MAP,G_HYBRID_MAP
> map = new GMap2(document.getElementById("map"),{mapTypes:
> [pic_customMap]});
> map.addControl(new GLargeMapControl());
> map.addControl(new GMapTypeControl());
> map.addControl(new GOverviewMapControl());
> map.enableDoubleClickZoom();
> map.enableContinuousZoom();
> map.enableScrollWheelZoom();
> map.setCenter(new GLatLng(centreLat, centreLon), initialZoom,
> pic_customMap);
>
> /////////////////////////////////////////////////////////////////////////////////////
> //Add any markers here e.g.
> // map.addOverlay(new GMarker(new GLatLng(x,y)));
> /////////////////////////////////////////////////////////////////////////////////////
>
> }
> }
--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups
"SIMILE Widgets" group.
To post to this group, send email to [email protected]
To unsubscribe from this group, send email to
[email protected]
For more options, visit this group at
http://groups.google.com/group/simile-widgets?hl=en
-~----------~----~----~----~------~----~------~--~---