var sLinkBase = 'http://www.climatechangenorthwest.co.uk/myareacontent'; var sThumbImgBase = 'http://www.climatechangenorthwest.co.uk/imagebank-images'; var oMarkers = new Object; //var aMarkers = []; //var aMarkerHtml = []; //var iMarkerIndex = 0; var oMap; var LastInfoBox; var point1 = 0; var iCurrentRegionId = 5; var iCurrentCatId = 0; var sIconBase = '/assets/map_icons'; var oIconMap = new Object; var oRegionLocations = new Object; oIconMap.cat73 = "key-icon-adaptation.gif";oIconMap.cat4 = "key-icon-advice.gif";oIconMap.cat17 = "key-icon-business.gif";oIconMap.cat66 = "key-icon-community.gif";oIconMap.cat14 = "key-icon-efficiency.gif";oIconMap.cat9 = "key-icon-public.gif";oIconMap.cat30 = "key-icon-renewable.gif";oIconMap.cat22 = "key-icon-sustainable.gif";oIconMap.cat6 = "key-icon-transport.gif"; oRegionLocations.region5 = new Array(53.34317300000000000000, -2.44171100000000000000);oRegionLocations.region1 = new Array(54.43650500000000000000, -3.09402500000000000000);oRegionLocations.region3 = new Array(53.46352600000000000000, -2.09838900000000000000);oRegionLocations.region2 = new Array(53.96335700000000000000, -2.55706800000000000000);oRegionLocations.region4 = new Array(53.45616700000000000000, -2.78503400000000000000);oRegionLocations.region6 = new Array(0.00000000000000000000, 0.00000000000000000000); function InitMap(zoom) { if (GBrowserIsCompatible()) { zoom = 9; var map = new GMap2(document.getElementById("googlemap-container")); map.setCenter(new GLatLng(53.85414668343028, -2.62847900390625), zoom); zoom = 9; map.addControl(new GSmallMapControl()); map.addControl(new GMapTypeControl()); oMap = map; point1 = 0; GetImages(5, 0); //GetImages(0, 0); } } function changeInitMap(lat, lng) { if (GBrowserIsCompatible()) { zoom = 9; var map = new GMap2(document.getElementById("googlemap-container")); map.setCenter(new GLatLng(lat, lng), zoom); map.addControl(new GSmallMapControl()); map.addControl(new GMapTypeControl()); oMap = map; point1 = 0; GetImages(5, 0); //GetImages(0, 0); } } function InitMiniMap(iMapInitLong, iMapInitLat, iCatId) { if (GBrowserIsCompatible()) { var map = new GMap2(document.getElementById("google-mini-map")); map.setCenter(new GLatLng(iMapInitLat, iMapInitLong), 10); var icon = new GIcon(); icon.image = sIconBase + '/' + oIconMap['cat'+iCatId]; icon.iconSize = new GSize(21, 21); icon.shadowSize = new GSize(22, 20); icon.iconAnchor = new GPoint(6, 20); icon.infoWindowAnchor = new GPoint(5, 1); var marker = new GMarker(new GLatLng(iMapInitLat, iMapInitLong), icon); map.addOverlay(marker); } } function PanToLocation(lat, lng) { if (!oMap){ changeInitMap(lat, lng); } oMap.panTo(new GLatLng(parseFloat(lat), parseFloat(lng))); if (point1 == 0){ oMap.setCenter(new GLatLng(parseFloat(lat), parseFloat(lng)), 9); point1 = 1; } } function ChangeLocation(iRegionId) { //iCurrentRegionId = iRegionId; //oMap.clearOverlays(); //GetImages(iCurrentRegionId, iCurrentCatId); if (iRegionId == '0'){ InitMap(7); zoom = 9; } else { PanToLocation(oRegionLocations['region'+iRegionId][0], oRegionLocations['region'+iRegionId][1]); } } function ChangeCat(iCatId) { document.getElementById('mapkey'+iCurrentCatId).className = document.getElementById('mapkey'+iCurrentCatId).className.replace(/active/, "inactive"); iCurrentCatId = iCatId; oMap.clearOverlays(); GetImages(iCurrentRegionId, iCurrentCatId); document.getElementById('mapkey'+iCurrentCatId).className = document.getElementById('mapkey'+iCurrentCatId).className.replace(/inactive/, "active"); } function GetImages(iRegionId, iCatId) { //alert("/imagebank/services/GetImages.xml.php?iRegionId="+iRegionId+"&iCatId="+iCatId); GDownloadUrl("/assets/map/GetImages.xml.php?iRegionId="+iRegionId+"&iCatId="+iCatId, function(data, responseCode) { var xml = GXml.parse(data); var results = document.getElementById('results'); try { if (xml.documentElement == null) throw "Error obtaining XML"; var images = xml.documentElement.getElementsByTagName("image"); if (images == null) throw "Error obtaining XML"; if (images == null || images.length == 0) throw "No Results"; //clear previous if any oMarkers = new Object; //aMarkerHtml = []; //iMarkerIndex = 0; for (var i = 0; i < images.length; i++) { //if (i > 3) break; var point = new GLatLng( parseFloat(images[i].getAttribute("lat")), parseFloat(images[i].getAttribute("lng")) ); oMarkerData = new MarkerData(images[i].getAttribute("image_id"), images[i].getAttribute("sub_id"), images[i].getAttribute("cat_id"), images[i].getAttribute("name"), images[i].getAttribute("thumb"), images[i].getAttribute("thumb_width"), images[i].getAttribute("thumb_height"), images[i].getAttribute("caption")); // create new javascript name marker = CreateMarker(point, oMarkerData); oMap.addOverlay(marker); //iMarkerIndex++; } } catch (e) { alert(e); return false; } } ); return true; } function CreateMarker(point, oMarkerData) { var icon = new GIcon(); var hiddenstatus = false; //alert('here2'); //alert(iCatId); icon.image = sIconBase + '/' + oIconMap['cat'+oMarkerData.iCatId]; //icon.shadow = "/assets/shared/images/services/mm_20_shadow.png"; //if (sName == 'Jodrell Bank') alert(icon.image); icon.iconSize = new GSize(21, 21); icon.shadowSize = new GSize(22, 20); icon.iconAnchor = new GPoint(6, 20); icon.infoWindowAnchor = new GPoint(5, 1); var marker = new GMarker(point, icon); var sImgThumb = sThumbImgBase+"/"+oMarkerData.iImgId+"/thumb/"+oMarkerData.sThumb; var sHtml = "

"+oMarkerData.sName+"
 

" + "

\""+oMarkerData.sName+"\"

"; oMarkers['img'+oMarkerData.iImgId] = new MarkerObj(marker, oMarkerData); GEvent.addListener(marker, "click", function() { //marker.openInfoWindowHtml(sHtml); //marker.shopMapBlowup(sHtml); ShowInfo(oMarkerData.iImgId); }); return marker; } /*function FindMarker(iImgId) { for (i in aMarkers) { if (aMarkers[i].markerId == markerId) return aMarkers[i]; } return null; }*/ function ShowInfo(iImgId) { oMarker = oMarkers['img'+iImgId]; document.getElementById('map-image-label').innerHTML = GetContent(oMarker.oMarkerData); document.getElementById('map-image').innerHTML = GetImage(oMarker.oMarkerData); if (LastInfoBox) { HideInfoBox(); lastInfoBox = null; } LastInfoBox=new Infobox(oMarker); oMap.addOverlay(LastInfoBox); MarkerPoint = oMarker.marker.getPoint(); var bounds = oMap.getBounds(); var southWest = bounds.getSouthWest(); var northEast = bounds.getNorthEast(); var lngSpan = northEast.lng() - southWest.lng(); var latSpan = northEast.lat() - southWest.lat(); var minLat = southWest.lat(); var maxLat = northEast.lat(); var minLon = southWest.lng(); var maxLon = northEast.lng(); var newLat=MarkerPoint.lat() - 0.3*(minLat-maxLat); var newLon=MarkerPoint.lng() - 0.17*(maxLon-minLon); oMap.panTo(new GLatLng(newLat, newLon)); } function HideShowMarkersByCat(iCatId) { //alert(iCatId); // get value of the checkbox // 1 for show and 0 for hide if (iCatId == '30'){ show = document.form1.renewable.checked;} if (iCatId == '6'){ show = document.form1.sustainable.checked;} if (iCatId == '22'){ show = document.form1.buildings.checked;} if (iCatId == '14'){ show = document.form1.efficiency.checked;} if (iCatId == '4'){ show = document.form1.support.checked;} if (iCatId == '17'){ show = document.form1.commitment.checked;} if (iCatId == '9'){ show = document.form1.public.checked;} if (iCatId == '66'){ show = document.form1.activity.checked;} if (iCatId == '73'){ show = document.form1.adaption.checked;} //alert(show); for (i in oMarkers) { //alert(i); oMarker = oMarkers[i]; //alert(oMarker); if (oMarker.oMarkerData.iCatId == iCatId) { if (show == '1'){ oMarker.marker.show(); checkboxes(iCatId); } else { oMarker.marker.hide(); uncheckboxes(iCatId); } } } } function HideShowMarkersByImgId(SubId) { for (i in oMarkers) { //alert(i); oMarker = oMarkers[i]; //alert(oMarker.oMarkerData.iSubCatId+"/"+SubId); if (oMarker.oMarkerData.iSubCatId == SubId) { if (oMarker.marker.isHidden()){ oMarker.marker.show(); } else { oMarker.marker.hide(); } } } } function HideInfoBox() { oMap.removeOverlay(LastInfoBox); } function MarkerData(iImgId, iSubCatId, iCatId, sName, sThumb, iThumbWidth, iThumbHeight, sCaption) { this.iImgId=iImgId; this.iCatId=iCatId; this.iSubCatId=iSubCatId; this.sName=sName; this.sThumb=sThumb; this.iThumbWidth=iThumbWidth; this.iThumbHeight=iThumbHeight; this.sCaption=sCaption; } function MarkerObj(marker, oMarkerData) { this.marker = marker; this.oMarkerData = oMarkerData; } // OVERLAY FUNCTIONS // Here, we define the infobox class for a custom Google maps overlay. // Next, we define the functions for initialise, remove from map and copy. // Lastly, we define the redraw function for plotting the infobox in the // correct position on the Google Maps. function Infobox(oMarkerObj) { this.oMarkerObj = oMarkerObj; } Infobox.prototype = new GOverlay(); Infobox.prototype.initialize = function(map) { var div = document.createElement("div"); div.style.position = "absolute"; // Specifies which google map layer the infobox will appear on map.getPane(G_MAP_MARKER_PANE).appendChild(div); this.map_ = oMap; this.div_ = div; } // Remove the main DIV from the map pane Infobox.prototype.remove = function() { this.div_.parentNode.removeChild(this.div_); } // Copy our data to a new Rectangle Infobox.prototype.copy = function() { return new Infobox(this.oMarkerObj); } // Redraw the rectangle based on the current projection and zoom level Infobox.prototype.redraw = function(force) { // We only need to redraw if the coordinate system has changed // if (!force) return; // Work out what content we need to put in the info box insertContent = '
'; insertContent += GetImage(this.oMarkerObj.oMarkerData); insertContent += '
'; insertContent += GetContent(this.oMarkerObj.oMarkerData); insertContent+='
'; insertContent+='
close
'; //alert(insertContent); MarkerPoint = this.oMarkerObj.marker.getPoint(); // Insert content into parent div defined in initialise function this.div_.innerHTML=insertContent; // Now work out where to place the info box on the basis of infobox height, // infobox width, and lon and lat of marker // Calculate the DIV coordinates var markerpos = this.map_.fromLatLngToDivPixel(new GLatLng(MarkerPoint.lat(), MarkerPoint.lng())); // set dimensions var divheight = document.getElementById("google-map-popup").offsetHeight; var divwidth = document.getElementById("google-map-popup").offsetWidth; // position the DIV this.div_.style.width = divwidth + "px"; this.div_.style.height = divheight + "px"; this.div_.style.left = (markerpos.x-105) + "px"; //this.div_.style.top = (markerpos.y-divheight+2) + "px"; this.div_.style.top = (markerpos.y-divheight+20) + "px"; } function GetContent(oMarkerData) { //var sImgThumb = sThumbImgBase+"/"+oMarkerData.iImgId+"/thumb/"+oMarkerData.sThumb; insertContent = oMarkerData.sName; insertContent += "+ more info"; /*insertContent = "

"+oMarkerData.sName+"

test

";*/ //insertContent+= "

"+this.oMarkerObj.oMarkerData.sName+"

"; /*insertContent+="

 

"; insertContent+="

Close

";*/ return insertContent; } function GetImage(oMarkerData) { var sImgThumb = sThumbImgBase+"/"+oMarkerData.iImgId+"/med/"+oMarkerData.sThumb; sImgContent = "\""+oMarkerData.sName+"\""; return sImgContent; }