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
-~----------~----~----~----~------~----~------~--~---