Revision: 4135 Author: hans URL: http://bknr.net/trac/changeset/4135
Better sponsor placemark loading, add "Sponsors" pseudo POI.
U trunk/projects/bos/payment-website/static/poi-ms/poi-ms.html U trunk/projects/bos/payment-website/static/poi-ms/poi-ms.js U trunk/projects/bos/web/sponsor-handlers.lisp
Modified: trunk/projects/bos/payment-website/static/poi-ms/poi-ms.html =================================================================== --- trunk/projects/bos/payment-website/static/poi-ms/poi-ms.html 2008-12-14 13:58:07 UTC (rev 4134) +++ trunk/projects/bos/payment-website/static/poi-ms/poi-ms.html 2008-12-14 23:17:22 UTC (rev 4135) @@ -24,7 +24,7 @@ </div> <div id="content"> <h1 id="title"></h1> - <div id="map"><img src="fake-map.jpg" width="505" height="505"/></div> + <div id="map" class="large"><img src="fake-map.jpg" width="505" height="505"/></div> <div id="content-body"> </div> </div>
Modified: trunk/projects/bos/payment-website/static/poi-ms/poi-ms.js =================================================================== --- trunk/projects/bos/payment-website/static/poi-ms/poi-ms.js 2008-12-14 13:58:07 UTC (rev 4134) +++ trunk/projects/bos/payment-website/static/poi-ms/poi-ms.js 2008-12-14 23:17:22 UTC (rev 4135) @@ -178,6 +178,7 @@ }
function showOverview() { + log('showOverview'); $('#back').css('visibility', 'hidden');
$('#title').text(NLS('Übersicht')); @@ -189,6 +190,13 @@ .empty() .append(UL({ id: 'poi-list' }));
+ $('#poi-list') + .append($(LI(null, + A({ href: '#' }, + IMG({ src: "http://www.google.com/mapfiles/marker.png" }), + B(NLS("Sponsoren"))))) + .bind('click', showSponsors)); + for (var i in pois) { var poi = pois[i]; $('#poi-list') @@ -269,8 +277,8 @@ } }
-// this.map.enableContinuousZoom(); -// this.map.enableScrollWheelZoom(); + this.map.enableContinuousZoom(); + this.map.enableScrollWheelZoom();
this.mapClicked = function (overlay, latlng, overlaylatlng) { log('map clicked, overlay: ' + overlay + ' latlng: ' + latlng + ' overlaylatlng: ' + overlaylatlng); @@ -284,7 +292,7 @@ var bounds = this.map.getBounds(); var sw = latLngToPoint(bounds.getSouthWest()); var ne = latLngToPoint(bounds.getNorthEast()); - log('map has moved: ' + sw.x + ',' + ne.y + ',' + ne.x + ',' + sw.y); +// log('map has moved: ' + sw.x + ',' + ne.y + ',' + ne.x + ',' + sw.y);
this.sponsorQuery = sw.x + ',' + ne.y + ',' + ne.x + ',' + sw.y; } @@ -292,10 +300,28 @@ GEvent.addListener(this.map, "click", bind(this.mapClicked, this)); GEvent.addListener(this.map, "moveend", bind(this.moveEnd, this));
+ this.sponsorMarkers = []; + + this.removeSponsorMarkers = function (all) { + log('remove sponsor markers'); + var markers = []; + var gmap = this.map; + map(function(marker) { + if (!all && marker.opened) { + markers.push(marker); + } else { + gmap.removeOverlay(marker); + } + }, this.sponsorMarkers); + this.sponsorMarkers = markers; + log('done'); + } + this.overview = function () { this.show(); $('#map').removeClass('small'); $('#map').addClass('large'); + this.removeSponsorMarkers(true); this.addControls(); this.map.checkResize(); this.map.setCenter(projection.fromPixelToLatLng(new GPoint(6500, 6350), 6), 2, customMap); @@ -304,6 +330,7 @@ this.poiDetail = function (x, y) { $('#map').removeClass('large'); $('#map').addClass('small'); + this.removeSponsorMarkers(true); this.removeControls(); this.map.checkResize(); this.map.setCenter(projection.fromPixelToLatLng(new GPoint(x, y), 6), 6); @@ -349,8 +376,6 @@ this.map.addOverlay(marker); }
- this.sponsorMarkers = []; - function makeTable(rows) { return TABLE({ 'class': 'sponsor-info-popup' }, TBODY(null, @@ -364,7 +389,6 @@ this.setSponsorMarker = function (sponsor) { var position = pointToLatLng(sponsor.contracts[0].centerX, sponsor.contracts[0].centerY); var sponsorMarker = new GMarker(position); - log('sponsor: ' + serializeJSON(sponsor)); var info = [ [ "Name", sponsor.name || NLS("[anonym]") ], [ "Country", sponsor.country ], @@ -374,20 +398,28 @@ info.push([ "Info", sponsor.infoText ]); } sponsorMarker.bindInfoWindow(makeTable(info)); + + function setMarkerOpened(marker, state) { + marker.opened = state; + } + + GEvent.addListener(this.map, "infowindowopen", partial(setMarkerOpened, sponsorMarker, true)); + GEvent.addListener(this.map, "infowindowclose", partial(setMarkerOpened, sponsorMarker, false)); + this.map.addOverlay(sponsorMarker); this.sponsorMarkers.push(sponsorMarker); }
- this.removeSponsorMarkers = function () { - map(bind(this.map.removeOverlay, this.map), this.sponsorMarkers); - this.sponsorMarkers = []; - } - this.putSponsorPlacemarks = function(data) { - log('got ' + data.sponsors.length + ' sponsors to display'); - this.removeSponsorMarkers(); - map(bind(this.setSponsorMarker, this), data.sponsors); - this.checkMapMoved(); + try { + log('got ' + data.sponsors.length + ' sponsors to display'); + this.removeSponsorMarkers(); + map(bind(this.setSponsorMarker, this), data.sponsors); + this.checkMapMoved(); + } + catch (e) { + log('error ' + e + ' putting sponsor placemarks'); + } }
this.checkMapMoved = function() { @@ -399,8 +431,6 @@ callLater(0.5, bind(this.checkMapMoved, this)); } } - - this.checkMapMoved(); }
var pages = { @@ -427,17 +457,17 @@
mainMap.zoomTo(contract.left, contract.top, 8); mainMap.setSponsorMarker(sponsor); - - // Math.max(contract.width, contract.height) }
function showSponsors() {
$('#left-bar') .empty() - .append(H3(NLS("Letzte Sponsoren")), - UL({ id: 'sponsor-list' })); +// .append(H3(NLS("Letzte Sponsoren")), +// UL({ id: 'sponsor-list' })) + ;
+ $('#title').text(NLS('Sponsoren')); map(function (sponsor) { $('#sponsor-list') .append($(LI(null, @@ -451,15 +481,19 @@ }, sponsors.slice(0, 10));
mainMap.overview(); + mainMap.zoomTo(7100, 5400, 5); + mainMap.checkMapMoved(); }
-function loadSponsors(data) { +function loadPOIs(data) { try { - for (var i in data.sponsors) { - var sponsor = data.sponsors[i]; - sponsors.push(sponsor); + for (var i in data.pois) { + var poi = data.pois[i]; + pois[poi.id] = poi; }
+ mainMap = new Map(); + var poi_id = document.location.hash.replace(/#/, ""); if (poi_id) { showPOI(pois[poi_id]); @@ -472,22 +506,6 @@ } }
-function loadPOIs(data) { - try { - for (var i in data.pois) { - var poi = data.pois[i]; - pois[poi.id] = poi; - } - - mainMap = new Map(); - - loadJSONDoc('/sponsors-json').addCallback(loadSponsors); - } - catch (e) { - alert(e); - } -} - function init() { $('#small-map a').bind('click', showOverview);
Modified: trunk/projects/bos/web/sponsor-handlers.lisp =================================================================== --- trunk/projects/bos/web/sponsor-handlers.lisp 2008-12-14 13:58:07 UTC (rev 4134) +++ trunk/projects/bos/web/sponsor-handlers.lisp 2008-12-14 23:17:22 UTC (rev 4135) @@ -361,8 +361,8 @@ (defun sponsors-at (query) (when (cl-ppcre:scan "^[0-9,]+$" query) (destructuring-bind (east north west south) (mapcar #'parse-integer (cl-ppcre:split "," query)) - (when (and (< (- west east) 1000) - (< (- south north) 1000)) + (when (and (< (- west east) 1500) + (< (- south north) 1500)) (labels ((x-y-to-lon-lat (x y) (geo-utm:utm-x-y-to-lon-lat (+ +nw-utm-x+ x) (- +nw-utm-y+ y) +utm-zone+ t)))