Then please include a URL to your exhibit! David
thaiboxer wrote: > 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 -~----------~----~----~----~------~----~------~--~---
