var route_data = null; var map; var fullscreen = false; var ele_img = null; var strLogo = "images/toolbar_mapmyride.png"; var strSiteLink = "http://www.mapmyride.com" var strSiteName = "MapMyRide.com"; var MARKER_DIRECTORY = "http://static.mapmyfitness.com/event/content/tdf2k7/icons/"; var SPRINT_ICON = new GIcon(); SPRINT_ICON.iconAnchor = new GPoint(9, 9); SPRINT_ICON.iconSize = new GSize(18, 18); SPRINT_ICON.image = MARKER_DIRECTORY + "sprint.png"; var FEED_ICON = new GIcon(); FEED_ICON.iconAnchor = new GPoint(9, 9); FEED_ICON.iconSize = new GSize(18, 18); FEED_ICON.image = MARKER_DIRECTORY + "feed.png"; var CLIMB1_ICON = new GIcon(); CLIMB1_ICON.iconAnchor = new GPoint(9, 9); CLIMB1_ICON.iconSize = new GSize(18, 18); CLIMB1_ICON.image = MARKER_DIRECTORY + "climb_1.png"; var CLIMB2_ICON = new GIcon(); CLIMB2_ICON.iconAnchor = new GPoint(9, 9); CLIMB2_ICON.iconSize = new GSize(18, 18); CLIMB2_ICON.image = MARKER_DIRECTORY + "climb_2.png"; var CLIMB3_ICON = new GIcon(); CLIMB3_ICON.iconAnchor = new GPoint(9, 9); CLIMB3_ICON.iconSize = new GSize(18, 18); CLIMB3_ICON.image = MARKER_DIRECTORY + "climb_3.png"; var CLIMB4_ICON = new GIcon(); CLIMB4_ICON.iconAnchor = new GPoint(9, 9); CLIMB4_ICON.iconSize = new GSize(18, 18); CLIMB4_ICON.image = MARKER_DIRECTORY + "climb_4.png"; var CLIMB_HORS_ICON = new GIcon(); CLIMB_HORS_ICON.iconAnchor = new GPoint(9, 9); CLIMB_HORS_ICON.iconSize = new GSize(18, 18); CLIMB_HORS_ICON.image = MARKER_DIRECTORY + "climb_hors.png"; var START_ICON = new GIcon(); START_ICON.iconAnchor = new GPoint(9, 9); START_ICON.iconSize = new GSize(18, 18); START_ICON.image = MARKER_DIRECTORY + "start.png"; var STOP_ICON = new GIcon(); STOP_ICON.iconAnchor = new GPoint(9, 9); STOP_ICON.iconSize = new GSize(18, 18); STOP_ICON.image = MARKER_DIRECTORY + "stop.png"; var _MMF_API_U = "info@mapmyfitness.com"; var _MMF_API_P = "0945fc9611f55fd0e183fb8b044f1afe"; var _MMF_API_KEY = "b513571b80685c74fa95b7755d916c24048889df4"; var _MMF_API_AUTH = "consumer_key="+_MMF_API_KEY+"&u="+_MMF_API_U+"&p="+_MMF_API_P+"&signed_token=09123j1k2kj1923892908091jsaj9e&signed_token_limit=1"; $(document).ready(function() { loadMap(); //---------------------------- // Apply Branding //---------------------------- applyBranding(); }); function loadMap() { //---------------------------- // Parse the querystring //---------------------------- var qs = new Querystring(window.location.search.substring(1)); var routeKey = qs.get("route_key"); var routeJson = "http://api.mapmyfitness.com/3.1/routes/get_route_json?" + _MMF_API_AUTH + "&route_key=" + routeKey; //---------------------------- // Toolbar stuff //---------------------------- var bolToolbar = true; if (qs.get("toolbar") && qs.get("toolbar") == "0") { bolToolbar = false; } if (bolToolbar) { var toolbarDiv = document.getElementById("event_menubar"); $("#event_toolbar").css("display",""); var toolbar = new YAHOO.widget.MenuBar(toolbarDiv, { autosubmenudisplay: true, hidedelay: 750, lazyload: true }); toolbar.render(); } $.getScript(routeJson, function(data){ try { var intMapWidth = $("#map").width(); if (intMapWidth == "" || !intMapWidth) { intMapWidth = 0; } //---------------------------- // Map Stuff //---------------------------- var map_div = document.getElementById("map"); map = new GMap2(map_div); // Calculate Offset var intControlOffset = 40; if (intMapWidth > 500) { intControlOffset = 10; } map.addControl(new GSmallMapControl(), new GControlPosition(G_ANCHOR_TOP_LEFT, new GSize(0, 50))); map.addControl(new GMenuMapTypeControl(), new GControlPosition(G_ANCHOR_TOP_RIGHT, new GSize(14, intControlOffset))); map.enableScrollWheelZoom(); //---------------------------- // Map Type //---------------------------- if (qs.get("map_type") && qs.get("map_type") != "") { var strMapType = qs.get("map_type"); strMapType = eval(strMapType); map.setMapType(strMapType); } //---------------------------- // Route Data //---------------------------- var route_data = mmr_route_data; var points = []; var bounds = new GLatLngBounds(); var routeStr = ""; var markers = []; for (var i = 0; i < route_data.points.length; i++) { var p = route_data.points[i]; var point = new GLatLng(parseFloat(p.lat), parseFloat(p.lng)); points.push(point); bounds.extend(point); //---------------------------- // Create markers //---------------------------- // // Create marker objects for placement on the map. We temprarily store them // in an array, because we cant place them on the map until we do a setCenter, // which comes outside of this loop var pointType = parseInt(p.type); // Special case: hard-code start and end points if (0 == i) { //start pointType = 4; } else if (route_data.points.length - 1 == i) { // black checker pointType = 36; } if (pointType > 1) { var myIcon = new GIcon(G_DEFAULT_ICON); myIcon.image = MarkerImagePrefix + Markers[pointType].filename; //GLog.write(myIcon.image); myIcon.shadow = null; myIcon.iconSize = new GSize(27, 29); myIcon.iconAnchor = new GPoint(13, 15); markers.push(new GMarker(point, { icon: myIcon })); } } // Optimize by only displaying up to MaxPoints in the line var MaxPoints = 500; var inc = parseInt(points.length / MaxPoints); if (inc < 1) inc = 1; var displayPoints = []; for (var i = 0; i < points.length; i += inc) { displayPoints.push(points[i]); } map.addOverlay(new GPolyline(displayPoints, 'red')); for (i = 0; i < markers.length; i++) { map.addOverlay(markers[i]); } // Center map.setCenter(bounds.getCenter(), parseInt(map.getBoundsZoomLevel(bounds))); //---------------------------- // Populate links with route id //---------------------------- var e = document.getElementById('fullscreen_link'); e.href = strSiteLink + "/view_route?r=" + route_data.route_key; e = document.getElementById('ge_link'); e.href = "http://api.mapmyfitness.com/3.1/routes/get_route_kml?"+_MMF_API_AUTH+"&route_key=" + route_data.route_key; e = document.getElementById('blog_link'); e.href = strSiteLink + "/add_route_to_blog.php?r=" + route_data.route_key; e = document.getElementById('embed_link'); e.href = strSiteLink + "/add_route_to_blog.php?r=" + route_data.route_key; e = document.getElementById('find_link'); e.href = strSiteLink + "/search"; e = document.getElementById('bookmark_link'); e.href = strSiteLink + "/view_route?r=" + route_data.route_key + "&chkBookmark=1"; e = document.getElementById('comments_link'); e.href = strSiteLink + "/view_route?r=" + route_data.route_key; e = document.getElementById('tell_link2'); e.href = strSiteLink + "/share_route?r=" + route_data.route_key; } catch (err) { document.getElementById("mmf_body").innerHTML = "An Error has occurred fetching this Map. Please hit refresh to try again after waiting 60 seconds."; } }); }; function printRoute() { if(route_data) { //GLog.write("print " + route_data.route_key); } } // ----------------------------------------------------------------- // branding // ----------------------------------------------------------------- function applyBranding() { var qs = new Querystring(window.location.search.substring(1)); var strRouteType = "ride"; if (qs.get("rt")) { strRouteType = qs.get("rt"); } if (strRouteType == "run") { strLogo = "images/toolbar_mapmyrun.png"; strSiteLink = "http://www.mapmyrun.com"; strSiteName = "MapMyRun.com"; } else if (strRouteType == "workout") { strLogo = "images/toolbar_mapmyfitness.png"; strSiteLink = "http://www.mapmyfitness.com"; strSiteName = "MapMyFitness.com"; } else if (strRouteType == "walk") { strLogo = "images/toolbar_mapmywalk.png"; strSiteLink = "http://www.mapmywalk.com"; strSiteName = "MapMyWalk.com"; } else if (strRouteType == "hike") { strLogo = "images/toolbar_mapmyhike.png"; strSiteLink = "http://www.mapmyhike.com"; strSiteName = "MapMyHike.com"; } else if (strRouteType == "tri") { strLogo = "images/toolbar_mapmytri.png"; strSiteLink = "http://www.mapmytri.com"; strSiteName = "MapMyTri.com"; } document.getElementById("logo_link").href = strSiteLink; document.getElementById("logo_link").title = strSiteName; document.getElementById("logo_image").src = strLogo; document.getElementById("logo_image").alt = strSiteName; document.getElementById("map_link").href = strSiteLink + "/create"; if (strRouteType == "workout") { document.getElementById("map_link").innerHTML = "Map Your Course"; } else { document.getElementById("map_link").innerHTML = "Map Your " + capitalizeMe(strRouteType); } } // ----------------------------------------------------------------- // form posting helpers // ----------------------------------------------------------------- /* dynamically create the save form and post to it */ function createHiddenInput(name, value) { var ele = document.createElement('input'); ele.type = 'hidden'; ele.name = name; ele.value = value; return ele; } function createPostFrm(url, target) { var frm = document.createElement('form'); frm.action = url; frm.method = 'POST'; frm.target = target; return frm; } function capitalizeMe(strInput) { return strInput.substring(0,1).toUpperCase() + strInput.substring(1,strInput.length); }