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:
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)
);
}
{
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', '<meta name="viewport" content="initial-scale=1.0, user-scalable=no" />');
$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: