From dbbae4f771d8a16ade19b6e873a1d9c543565a8e Mon Sep 17 00:00:00 2001 From: =?utf8?q?St=C3=A9phane=20Jacob?= Date: Wed, 18 May 2011 15:09:17 +0200 Subject: [PATCH] Displays dots on map. MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit Signed-off-by: Stéphane Jacob --- htdocs/javascript/maps.js | 14 ++++++++++++++ modules/geoloc.php | 16 ++++++++++++++-- 2 files changed, 28 insertions(+), 2 deletions(-) diff --git a/htdocs/javascript/maps.js b/htdocs/javascript/maps.js index 96cf94e..895679c 100644 --- a/htdocs/javascript/maps.js +++ b/htdocs/javascript/maps.js @@ -29,6 +29,20 @@ function map_initialize(latitude, longitude) mapTypeId: google.maps.MapTypeId.ROADMAP }; var map = new google.maps.Map($('#map_canvas').get(0), myOptions); + + $.xget('map/ajax', function(json_data) { + var data = jQuery.parseJSON(json_data); + var dots = data.data; + var count = dots.length; + var markers = []; + + for (var i = 0; i < count; ++i) { + var latLng = new google.maps.LatLng(dots[i].latitude, dots[i].longitude); + var marker = new google.maps.Marker({'position': latLng}); + markers.push(marker); + } + var mc = new MarkerClusterer(map, markers); + }); } // vim:set et sw=4 sts=4 sws=4 foldmethod=marker enc=utf-8: diff --git a/modules/geoloc.php b/modules/geoloc.php index e98d945..5b44c23 100644 --- a/modules/geoloc.php +++ b/modules/geoloc.php @@ -24,7 +24,8 @@ class GeolocModule extends PLModule function handlers() { return array( - 'map' => $this->make_hook('map', AUTH_COOKIE), + 'map' => $this->make_hook('map', AUTH_COOKIE), + 'map/ajax' => $this->make_hook('map_ajax', AUTH_COOKIE) ); } @@ -32,15 +33,26 @@ class GeolocModule extends PLModule { global $globals; $page->changeTpl('geoloc/index.tpl'); + $page->addJsLink('maps.js'); + $page->addJsLink('markerclusterer_packed.js'); $map_url = $globals->maps->dynamic_map . '?&sensor=false&v=' . $globals->maps->api_version . '&language=' . $globals->maps->language; $page->addJsLink($map_url, false); - $page->addJsLink('maps.js'); $page->assign('pl_extra_header', ''); $page->assign('latitude', 0); $page->assign('longitude', 0); } + + function handler_map_ajax($page) + { + $data = XDB::rawFetchAllAssoc('SELECT latitude, longitude + FROM profile_addresses + WHERE type = \'home\' AND latitude IS NOT NULL AND longitude IS NOT NULL'); + $page->jsonAssign('data', $data); + + return PL_JSON; + } } // vim:set et sw=4 sts=4 sws=4 foldmethod=marker enc=utf-8: -- 2.1.4