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('