=0; $i--) $s .= $chars[((($y >> $i) & 1) << 1) + (($x >> $i) & 1)]; return $s; } function build_url($x, $y, $z, $t) { if ($t == 'goog_map') return 'http://mt'.(($x+$y)&3).'.google.com/mtv=w2.99&x='.$x.'&y='.$y.'&zoom='.(17-$z).''; elseif ($t == 'goog_sat') return 'http://kh'.(($x+$y)&3).'.google.com/khv=99&t=t'.build_q($x, $y, $z, 'qrts').''; elseif ($t == 'goog_hyb') return 'http://mt'.(($x+$y)&3).'.google.com/mtv=w2t.99&x='.$x.'&y='.$y.'&zoom='.(17-$z).''; elseif ($t == 'goog_ter') return 'http://mt'.(($x+$y)&3).'.google.com/mtv=w2p.99&x='.$x.'&y='.$y.'&zoom='.(17-$z).''; elseif ($t == 'ditu') return 'http://servicetile.mapabc.com/googlechina/maptilev=cn1&x='.$x.'&y='.$y.'&zoom='.(17-$z).''; elseif ($t == 'msn_map') return 'http://r'.((($y&1)<<1)+($x&1)).'.ortho.tiles.virtualearth.net/tiles/r'.build_q($x, $y, $z).'.pngg=131'; elseif ($t == 'msn_sat') return 'http://a'.((($y&1)<<1)+($x&1)).'.ortho.tiles.virtualearth.net/tiles/a'.build_q($x, $y, $z).'.pngg=131'; elseif ($t == 'msn_hyb') return 'http://h'.((($y&1)<<1)+($x&1)).'.ortho.tiles.virtualearth.net/tiles/h'.build_q($x, $y, $z).'.pngg=131'; elseif ($t == 'msn_ter') return 'http://r'.((($y&1)<<1)+($x&1)).'.ortho.tiles.virtualearth.net/tiles/r'.build_q($x, $y, $z).'.pngg=131&shading=hill'; elseif ($t == 'msn_brasil') return 'http://img'.((($y&1)<<1)+($x&1)+1).'.maplink3.com.br/MapaVE.aspxv=r|'.((($y&1)<<1)+($x&1)+1).'|r|'.build_q($x, $y, $z).'|png|66'; elseif ($t == 'y_map') return 'http://png.maps.yimg.com/pngv=4.1&t=m&s=256&f=j&x='.$x.'&y='.(((1<<$z)>>1)-1-$y).'&z='.(18-$z).''; elseif ($t == 'y_sat') return 'http://aerial.maps.yimg.com/ximgv=1.7&t=a&s=256&x='.$x.'&y='.(((1<<$z)>>1)-1-$y).'&z='.(18-$z).''; elseif ($t == 'y_hyb') return 'http://aerial.maps.yimg.com/tilev=2.5&t=p&x='.$x.'&y='.(((1<<$z)>>1)-1-$y).'&z='.(18-$z).''; elseif ($t == 'y_map_in') return 'http://tile.in.maps.yahoo.com/tileimgtype=png&v=0.96&x='.$x.'&y='.(((1<<$z)>>1)-1-$y).'&z='.(18-$z).''; elseif ($t == 'y_hyb_in') return 'http://aerial.in.maps.yahoo.com/tileimgtype=png&v=0.93&x='.$x.'&y='.(((1<<$z)>>1)-1-$y).'&z='.(18-$z).''; elseif ($t == 'ask_map') return 'http://'.(($z<11) ? 'mapstatic' : 'mapcache').(1+(($x+$y)&3)).'.ask.com/map/'.(19-$z).'/'.($x-((1<<$z)>>1)).'/'.($y-((1<<$z)>>1)).'partner=&tc=28'; elseif ($t == 'ask_sat') return 'http://'.(($z<11) ? 'mapstatic' : 'mapcache').(1+(($x+$y)&3)).'.ask.com/sat/'.(19-$z).'/'.($x-((1<<$z)>>1)).'/'.($y-((1<<$z)>>1)).'partner=&tc=28'; elseif ($t == 'ask_hyb') return 'http://'.(($z<11) ? 'mapstatic' : 'mapcache').(1+(($x+$y)&3)).'.ask.com/mapt/'.(19-$z).'/'.($x-((1<<$z)>>1)).'/'.($y-((1<<$z)>>1)).'partner=&tc=28'; elseif ($t == 'ask_phy') return 'http://'.(($z<11) ? 'mapstatic' : 'mapcache').(1+(($x+$y)&3)).'.ask.com/phy/'.(19-$z).'/'.($x-((1<<$z)>>1)).'/'.($y-((1<<$z)>>1)).'partner=&tc=28'; elseif ($t == 'osm_m') return 'http://tile.openstreetmap.org/'.$z.'/'.$x.'/'.$y.'.png'; elseif ($t == 'osm_o') return 'http://tah.openstreetmap.org/Tiles/tile/'.$z.'/'.$x.'/'.$y.'.png'; elseif ($t == 'oam') return 'http://tile.openaerialmap.org/tiles/v=mgm&layer=openaerialmap-900913&x='.$x.'&y='.$y.'&zoom='.$z.''; elseif ($t == 'moon_elev') return 'http://mw1.google.com/mw-planetary/lunar/lunarmaps_v1/terrain/'.$z.'/'.$x.'/'.((1<<$z)-$y-1).'.jpg'; elseif ($t == 'moon_vis') return 'http://mw1.google.com/mw-planetary/lunar/lunarmaps_v1/clem_bw/'.$z.'/'.$x.'/'.((1<<$z)-$y-1).'.jpg'; elseif ($t == 'moon_apo') return 'http://mw1.google.com/mw-planetary/lunar/lunarmaps_v1/apollo/'.$z.'/'.$x.'/'.((1<<$z)-$y-1).'.jpg'; elseif ($t == 'mars_elev') return 'http://mw1.google.com/mw-planetary/mars/elevation/t'.build_q($x, $y, $z, 'qrts').'.jpg'; elseif ($t == 'mars_vis') return 'http://mw1.google.com/mw-planetary/mars/visible/t'.build_q($x, $y, $z, 'qrts').'.jpg'; elseif ($t == 'mars_ir') return 'http://mw1.google.com/mw-planetary/mars/infrared/t'.build_q($x, $y, $z, 'qrts').'.jpg'; else return 'unknown'; } function to_merc($x, $y, $z, $t) { // $t is not used $sh = 7+$z; // $bit = 1<<(8+$z); // $tx = $x & ($bit-1); $tx = doubleval($x*256) / (1<<$sh) - 1.0; $lon = $tx * 180.0; $ty = doubleval($y*256) / (1<<$sh) - 1.0; $ty *= M_PI; $ey = rad2deg(atan(exp($ty))); $lat = ($ey * 2.0) - 90.0; return array('lon' => $lon, 'lat' => -$lat); } $maps = array( 'goog_map' => array('name' => 'Google Maps', 'minz' => 0, 'maxz' => 19, 'trans' => false, 'order' => 1), 'goog_sat' => array('name' => 'Google Satellite', 'minz' => 0, 'maxz' => 22, 'trans' => false, 'order' => 1), 'goog_hyb' => array('name' => 'Google Hybrid (Labels)', 'minz' => 1, 'maxz' => 19, 'trans' => true, 'order' => 2), 'goog_ter' => array('name' => 'Google Terrain', 'minz' => 0, 'maxz' => 15, 'trans' => false, 'order' => 1), 'ditu' => array('name' => 'Google Ditu (China Maps)', 'minz' => 0, 'maxz' => 17, 'trans' => false, 'order' => 1), 'msn_map' => array('name' => 'Windows Live Maps', 'minz' => 1, 'maxz' => 19, 'trans' => false, 'order' => 1), 'msn_sat' => array('name' => 'Windows Live Satellite', 'minz' => 1, 'maxz' => 19, 'trans' => false, 'order' => 1), 'msn_hyb' => array('name' => 'Windows Live Hybrid', 'minz' => 1, 'maxz' => 19, 'trans' => false, 'order' => 1), 'msn_ter' => array('name' => 'Windows Live Terrain', 'minz' => 1, 'maxz' => 19, 'trans' => false, 'order' => 1), 'msn_brasil' => array('name' => 'Live Brasil Maps', 'minz' => 1, 'maxz' => 19, 'trans' => false, 'order' => 1), 'y_map' => array('name' => 'Yahoo Maps', 'minz' => 1, 'maxz' => 17, 'trans' => false, 'order' => 1), 'y_sat' => array('name' => 'Yahoo Satellite', 'minz' => 1, 'maxz' => 17, 'trans' => false, 'order' => 1), 'y_hyb' => array('name' => 'Yahoo Hybrid (Labels)', 'minz' => 1, 'maxz' => 17, 'trans' => true, 'order' => 2), 'y_map_in' => array('name' => 'Yahoo India Maps', 'minz' => 1, 'maxz' => 17, 'trans' => false, 'order' => 1), 'y_hyb_in' => array('name' => 'Yahoo India Hybrid (Labels)', 'minz' => 1, 'maxz' => 17, 'trans' => true, 'order' => 3), 'ask_map' => array('name' => 'Ask.com Maps', 'minz' => 1, 'maxz' => 19, 'trans' => false, 'order' => 1), 'ask_sat' => array('name' => 'Ask.com Satellite', 'minz' => 1, 'maxz' => 19, 'trans' => false, 'order' => 1), 'ask_hyb' => array('name' => 'Ask.com Hybrid (Labels)', 'minz' => 1, 'maxz' => 19, 'trans' => true, 'order' => 2), 'ask_phy' => array('name' => 'Ask.com Physical', 'minz' => 1, 'maxz' => 19, 'trans' => false, 'order' => 1), 'osm_m' => array('name' => 'OpenStreetMap (Mapnik)', 'minz' => 0, 'maxz' => 17, 'trans' => false, 'order' => 1), 'osm_o' => array('name' => 'OpenStreetMap (Osmarender)', 'minz' => 0, 'maxz' => 17, 'trans' => false, 'order' => 1), 'oam' => array('name' => 'OpenAerialMap', 'minz' => 0, 'maxz' => 17, 'trans' => false, 'order' => 1), 'moon_elev' => array('name' => 'Google Moon (Elevation)', 'minz' => 0, 'maxz' => 7, 'trans' => false, 'order' => 1), 'moon_vis' => array('name' => 'Google Moon (Visible)', 'minz' => 0, 'maxz' => 9, 'trans' => false, 'order' => 1), 'moon_apo' => array('name' => 'Google Moon (Apollo)', 'minz' => 0, 'maxz' => 15, 'trans' => false, 'order' => 1), 'mars_elev' => array('name' => 'Google Mars (Elevation)', 'minz' => 0, 'maxz' => 8, 'trans' => false, 'order' => 1), 'mars_vis' => array('name' => 'Google Mars (Visible)', 'minz' => 0, 'maxz' => 8, 'trans' => false, 'order' => 1), 'mars_ir' => array('name' => 'Google Mars (Infrared)', 'minz' => 0, 'maxz' => 8, 'trans' => false, 'order' => 1), ); function network_link($t) { global $maps, $v, $dx, $dy; ?> 0 http://mt.mgmaps.com/kml/maps-1.1.phpmt=&v=&dx=&dy= '."\n"; ?> Map Overlays 1 Google Maps 0 Windows Live Maps 0 Yahoo Maps 0 Ask.com Maps 0 OpenStreetMap 0 '."\n"; if ($notset != 0) { ?> 256 -1 http://mt.mgmaps.com/kml/maps-1.1.phpmt=&x=0&y=0&z=0&v=&dx=&dy= onRegion 256 -1 0_0_1 256 -1 http://mt.mgmaps.com/kml/maps-1.1.phpmt=&x=0&y=0&z=1&v=&dx=&dy= onRegion 1_0_1 256 -1 http://mt.mgmaps.com/kml/maps-1.1.phpmt=&x=1&y=0&z=1&v=&dx=&dy= onRegion 0_1_1 256 -1 http://mt.mgmaps.com/kml/maps-1.1.phpmt=&x=0&y=1&z=1&v=&dx=&dy= onRegion 1_1_1 256 -1 http://mt.mgmaps.com/kml/maps-1.1.phpmt=&x=1&y=1&z=1&v=&dx=&dy= onRegion = $maps[$t]['minz']) { ?>