var map = null; var mgr = null; var flagNoUpdate = 0; var flagNoRemoveDetails = 0; var mapTypeControl; var mapTypeInfo = [ {'id': 'normal', 'type': G_NORMAL_MAP, 'title': 'Kaart'}, {'id': 'satellite', 'type': G_SATELLITE_MAP, 'title': 'Satelliet'}, {'id': 'hybrid', 'type': G_HYBRID_MAP, 'title': 'Hybride'} ]; var toolTip = new ToolTip(); var details = new Details(); var mouseIn = ''; function initializeMap() { if (!GBrowserIsCompatible()) return; setMapHeight(); window.addEvent('resize', setMapHeight); map = new GMap2($('map')); //map.addControl(new GSmallMapControl()); map.addControl(new GLargeMapControl3D()); // maptype control mapTypeControl = new MapTypeControl(); map.addControl(mapTypeControl); //map.addControl(new GOverviewMapControl()); map.enableDoubleClickZoom(); map.setCenter(new GLatLng(q.map.lat, q.map.lng), q.map.zoom); //map.setMapType(G_SATELLITE_MAP); // streetview /* var streetView = new GStreetviewOverlay(); map.addOverlay(streetView); */ mgr = new MarkerManager(map); GEvent.addListener(map, 'moveend', function() { toolTip.remove(); q.map.zoom = map.getZoom(); var point = map.getCenter(); q.map.lng = point.x; q.map.lat = point.y; update(); }); GEvent.addListener(map, 'infowindowclose', function(){ update(); }); GEvent.addListener(map, 'zoomend', function() { mgr.clearMarkers(); toolTip.remove(); details.remove(); q.map.zoom = map.getZoom(); var point = map.getCenter(); q.map.lng = point.x; q.map.lat = point.y; }); } function updateMap() { if (!$chk(map)) return; if (flagNoUpdate) { // even niet updaten flagNoUpdate = 0; } else { // voeg objecten toe die binnen de grenzen van de kaart vallen if ($chk(q)) { //if (q.sw && q.ne) $('debug').value = "\nBEFORE sw: " + q.sw.lat + ',' + q.sw.lng + "\nne: " + q.ne.lat + ',' + q.ne.lng + $('debug').value; var bounds = map.getBounds(); var southWest = bounds.getSouthWest(); var northEast = bounds.getNorthEast(); q.sw = Object(); q.sw.lat = southWest.lat(); q.sw.lng = southWest.lng(); q.ne = Object(); q.ne.lat = northEast.lat(); q.ne.lng = northEast.lng(); q.zoom = map.getZoom(); var url = '/modules/search/ajax/objects.php?'; url += 'q=' + JSON.encode(q) + '&map_type=default'; //if (q.sw && q.ne) $('debug').value = "\nAFTER sw: " + q.sw.lat + ',' + q.sw.lng + "\nne: " + q.ne.lat + ',' + q.ne.lng + $('debug').value; } //alert(url); var jsonRequest = new Request.JSON({url: url, onComplete: placeObjects}).get(); } } function placeObjects(data) { var iconHouseSale = new GIcon(); iconHouseSale.image = '/img/gm/house_red.gif'; iconHouseSale.shadow = '/img/gm/shadow_house_red.png'; iconHouseSale.iconAnchor = new GPoint(6, 20); iconHouseSale.infoWindowAnchor = new GPoint(5, 1); var iconHousesSale = new GIcon(); iconHousesSale.image = '/img/gm/houses_red.gif'; iconHousesSale.shadow = '/img/gm/shadow_houses_red.png'; iconHousesSale.iconAnchor = new GPoint(6, 20); iconHousesSale.infoWindowAnchor = new GPoint(5, 1); var iconHouseRent = new GIcon(); iconHouseRent.image = '/img/gm/house_blue.gif'; iconHouseRent.shadow = '/img/gm/shadow_house_blue.png'; iconHouseRent.iconAnchor = new GPoint(6, 20); iconHouseRent.infoWindowAnchor = new GPoint(5, 1); var iconHousesRent = new GIcon(); iconHousesRent.image = '/img/gm/houses_blue.gif'; iconHousesRent.shadow = '/img/gm/shadow_houses_blue.png'; iconHousesRent.iconAnchor = new GPoint(6, 20); iconHousesRent.infoWindowAnchor = new GPoint(5, 1); var iconGroup1 = new GIcon(); var iconGroup1 = new GIcon(); iconGroup1.image = '/img/gm/circle1.png'; iconGroup1.iconAnchor = new GPoint(11, 7); iconGroup1.infoWindowAnchor = new GPoint(10, 7); var iconGroup2 = new GIcon(); iconGroup2.image = '/img/gm/circle2.png'; iconGroup2.iconAnchor = new GPoint(11, 12); iconGroup2.infoWindowAnchor = new GPoint(10, 7); var iconGroup3 = new GIcon(); iconGroup3.image = '/img/gm/circle3.png'; iconGroup3.iconAnchor = new GPoint(12, 16); iconGroup3.infoWindowAnchor = new GPoint(10, 7); var iconGroup4 = new GIcon(); iconGroup4.image = '/img/gm/circle4.png'; iconGroup4.iconAnchor = new GPoint(12, 20); iconGroup4.infoWindowAnchor = new GPoint(10, 7); var iconGroup5 = new GIcon(); iconGroup5.image = '/img/gm/circle5.png'; iconGroup5.iconAnchor = new GPoint(14, 26); iconGroup5.infoWindowAnchor = new GPoint(10, 7); var iconGroup6 = new GIcon(); iconGroup6.image = '/img/gm/circle5.png'; iconGroup6.iconAnchor = new GPoint(10, 26); iconGroup6.infoWindowAnchor = new GPoint(10, 7); // verwijder eerdere markers mgr.clearMarkers(); // indicator $('indicator').setStyle('display', 'none'); // voeg markers toe var batch = []; var iconGroup; //console.log(data.markers); //alert(data.markers); for (var i = 0; i < data.markers.length; i++) { var point = new GLatLng(data.markers[i].lat, data.markers[i].lng); var marker = null; if (data.markers[i].type == 'cluster') { if (data.markers[i].num < 10) iconGroup = iconGroup1; else if (data.markers[i].num < 100) iconGroup = iconGroup2; else if (data.markers[i].num < 1000) iconGroup = iconGroup3; else if (data.markers[i].num < 10000) iconGroup = iconGroup4; else if (data.markers[i].num < 100000) iconGroup = iconGroup5; else iconGroup = iconGroup6; marker = createMarker(point, data.markers[i].html, iconGroup, data.markers[i].num); } else if (data.markers[i].type == 'multiple') { if (data.markers[i].salerent == 1) marker = createMarker(point, data.markers[i].html, iconHousesSale, 0); if (data.markers[i].salerent == 2) marker = createMarker(point, data.markers[i].html, iconHousesRent, 0); } else if (data.markers[i].type == 'single') { if (data.markers[i].salerent == 1) marker = createMarker(point, data.markers[i].html, iconHouseSale, 0); if (data.markers[i].salerent == 2) marker = createMarker(point, data.markers[i].html, iconHouseRent, 0); } else { //console.log(data.markers[i]); } batch.push(marker); } mgr.addMarkers(batch, 1); mgr.refresh(); // aantal objecten op de kaart showNumObjects(data.total); // toon prijs per meter voor de verschillende type_short //console.log(data.info); showPPM(data.info); // geen objecten? if (data.total == 0) showMsg('Er zijn geen woningen gevonden. Ga naar een andere locatie, of pas uw zoekcriteria aan.' , true); } function createMarker(point, html, icon, grouped) { if (grouped > 0) { opts = { "icon": icon, "clickable": true, "labelText": grouped, "labelOffset": new GSize(0, 0) }; var marker = new LabeledMarker(point, opts); GEvent.addListener(marker, "click", function() { flagNoUpdate = 1; mgr.clearMarkers(); map.setCenter(marker.getLatLng()); //map.panTo(marker.getLatLng()); map.zoomIn(); }); if (html.mouse != '') { GEvent.addListener(marker, "mouseover", function() { marker.x_offset = 20; marker.y_offset = 0; toolTip.show(marker, html.mouse); }); } } else { var marker = new GMarker(point, {"icon": icon}); GEvent.addListener(marker, 'mouseover', function() { //flagNoUpdate = 1; details.wait(marker, html.click); }); GEvent.addListener(marker, 'click', function() { //flagNoUpdate = 1; //details.show(marker, html.click); }); GEvent.addListener(marker, 'mouseout', function() { details.out(marker, html.click); }); /* GEvent.addListener(marker, "mouseover", function() { marker.x_offset = 12; marker.y_offset = -20; toolTip.show(marker, html.mouse); }); GEvent.addListener(marker, "mouseout", function() { toolTip.remove(); }); GEvent.addListener(marker, 'click', function() { flagNoUpdate = 1; details.show(marker, html.click); }); */ } //alert(marker.getLatLng()); return marker; } function setMapHeight() { // hoeveel ruimte is er beschikbaar? var posMap = $('map').getPosition(); //alert(posMap.y); var posFooter = $('footer').getPosition(); //alert(posFooter.y); $('map').setStyle('height', posFooter.y - posMap.y); } google.setOnLoadCallback(init);