function customGetTileUrl(coord, zoom) { var f = "http://sailing.mit.edu/tiles/" + zoom + "/" + coord.x + "_" + coord.y + ".png"; return f; } function myispng() { return true; } function myisopaque() { return 1.0; } function mercator(latlng) { var x = (180 + latlng.lng()) / 360.0; var y = 0.5 - 0.5 * Math.log(Math.tan(Math.PI / 4 + Math.PI * latlng.lat() / 360)) / Math.PI; return new GPoint(x,y); } function demercator(point) { var lng = 360.0 * point.x - 180.0; var lat = 2.0 * Math.atan(Math.exp(2.0 * Math.PI * (0.5 - point.y))) - Math.PI / 2.0; lat *= 180 / Math.PI; return new GLatLng(lat, lng); } function getTileUrl(latlng, zoom) { var numtiles = Math.pow(2, zoom); var merc = mercator(latlng); var tilex = Math.floor(merc.x * numtiles); var tiley = Math.floor(merc.y * numtiles); var str = "http://wmbr.org/tiles/" + zoom + "/" + tilex + "_" + tiley + ".png"; return str; } function createTMarker(aLatLng, aName, anIcon) { var marker = new GMarker(aLatLng, { icon:anIcon }); GEvent.addListener(marker, "click", function() { marker.openInfoWindowHtml('' + aName + '
MBTA Station Entrance
'); }); return marker; } function createLetterIcon(letter) { var anIcon = new GIcon(); anIcon.image = "http://www.google.com/mapfiles/marker" + letter + ".png"; anIcon.shadow = "http://www.google.com/mapfiles/shadow50.png"; anIcon.iconSize = new GSize(20, 34); anIcon.shadowSize = new GSize(37, 34); anIcon.iconAnchor = new GPoint(9, 34); anIcon.infoWindowAnchor = new GPoint(9, 2); anIcon.infoShadowAnchor = new GPoint(18, 25); return anIcon; } function initializeGMap() { if (GBrowserIsCompatible()) { var centerLatLng = new GLatLng(42.360240, -71.0485); var mooringLatLng = new GLatLng(42.360716, -71.047050); var pavilionLatLng = new GLatLng(42.358448, -71.087764); var aquariumTLatLng = new GLatLng(42.359800, -71.051636); var bwmLatLng = new GLatLng(42.360344, -71.049159); var blueTIcon = new GIcon(); blueTIcon.image = "http://sailing.mit.edu/bluewater/blue_T.png"; blueTIcon.shadow = "http://sailing.mit.edu/bluewater/T_shadow.png"; blueTIcon.iconSize = new GSize(18, 18); blueTIcon.shadowSize = new GSize(28, 18); blueTIcon.iconAnchor = new GPoint(9, 9); blueTIcon.infoWindowAnchor = new GPoint(12, 4); var sailIcon = new GIcon(); sailIcon.image = "http://sailing.mit.edu/bluewater/sail_icon.png"; sailIcon.shadow = "http://sailing.mit.edu/bluewater/sail_shadow.png"; sailIcon.iconSize = new GSize(30, 34); sailIcon.shadowSize = new GSize(39, 34); sailIcon.iconAnchor = new GPoint(12, 31); sailIcon.infoWindowAnchor = new GPoint(17, 18); var pavIcon = new GIcon(); pavIcon.image = "http://sailing.mit.edu/bluewater/burgee_small.png"; pavIcon.shadow = "http://sailing.mit.edu/bluewater/burgee_small_shadow.png"; pavIcon.iconSize = new GSize(21, 31); pavIcon.shadowSize = new GSize(32, 31); pavIcon.iconAnchor = new GPoint(1, 30); pavIcon.infoWindowAnchor = new GPoint(15, 6); var infoIconM = createLetterIcon("M"); var bwmMarker = new GMarker(bwmLatLng, { icon:infoIconM }); var aqMarker1 = createTMarker(aquariumTLatLng, 'Aquarium', blueTIcon); var pavMarker = new GMarker(pavilionLatLng, { icon:pavIcon }); var sailMarker = new GMarker(mooringLatLng, { icon:sailIcon }); var map = new GMap2(document.getElementById("map")); map.setCenter(centerLatLng, 15); map.addControl(new GLargeMapControl()); map.addControl(new GMapTypeControl()); map.addControl(new GScaleControl()); map.setMapType(G_NORMAL_MAP); var minzoom = 8; var maxzoom = 17; var copyright = new GCopyright(1, new GLatLngBounds(new GLatLng(39.72663, -74.16886), new GLatLng(44.86702, -64.95033)), minzoom, "(Public Domain)"); var copyrightCollection = new GCopyrightCollection('Theodric Technologies'); copyrightCollection.addCopyright(copyright); var tilelayers = [new GTileLayer(copyrightCollection, minzoom, maxzoom)]; tilelayers[0].getTileUrl = customGetTileUrl; tilelayers[0].isPng = myispng; tilelayers[0].getOpacity = myisopaque; var custommap = new GMapType(tilelayers, new GMercatorProjection(maxzoom+1), "Nautical", {errorMessage:"No data available"}); map.addMapType(custommap); map.addOverlay(aqMarker1); map.addOverlay(pavMarker); map.addOverlay(bwmMarker); map.addOverlay(sailMarker); GEvent.addListener(sailMarker, "click", function() { sailMarker.openInfoWindowHtml('Nevermore\'s Mooring
'); }); GEvent.addListener(pavMarker, "click", function() { pavMarker.openInfoWindowHtml('MIT Sailing Pavilion'); }); GEvent.addListener(bwmMarker, "click", function() { bwmMarker.openInfoWindowHtml('
Marina Entrance

Entrance Gate to
Boston Waterboat Marina
'); }); } }