Thanks David, i've got both working, just having trouble getting to work in the myMapConstructor function. Its my lack of JavaScript knowledge.
On Dec 22, 9:43 am, David Huynh <[email protected]> wrote: > Sorry but your question is really about Google Maps. You'd need to ask > on the Google Maps forum. > > http://groups.google.com/group/Google-Maps-API/ > > Try to get your map to work independent of Exhibit first, and then > integrate it. > > David > > thaiboxer wrote: > > 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 -~----------~----~----~----~------~----~------~--~---
