add markers when a location is selected

This commit is contained in:
Laura Klünder 2017-10-29 12:00:59 +01:00
parent 0cc7617502
commit 31cb2dd046

View file

@ -48,22 +48,23 @@ c3nav = {
_locationinput_set: function (elem, location) { _locationinput_set: function (elem, location) {
// set a location input // set a location input
c3nav._locationinput_reset_autocomplete(); c3nav._locationinput_reset_autocomplete();
var $search = $('#search'); var $search = $('#search'),
if (location === null || location === undefined) { location = (location === undefined) ? null : location,
elem.removeClass('selected').addClass('empty').data('location', null).data('lastlocation', null); title = (location === null) ? '' : location.title,
elem.find('input').val('').data('origval', null); subtitle = (location === null) ? '' : location.subtitle;
elem.find('small').text(''); elem.toggleClass('selected', location !== null).toggleClass('empty', location === null)
if (elem.attr('id') === 'destination-input') { .data('location', location).data('lastlocation', location);
elem.find('input').val(title).data('origval', null);
elem.find('small').text(subtitle);
if (elem.attr('id') === 'destination-input') {
if (location === null) {
$search.removeClass('location-view'); $search.removeClass('location-view');
} else if (!$search.is('.location-view, .route-view')) {
$search.addClass('location-view');
} }
return;
}
elem.addClass('selected').removeClass('empty').data('location', location).data('lastlocation', location);
elem.find('input').val(location.title).data('origval', null);
elem.find('small').text(location.subtitle);
if (elem.attr('id') === 'destination-input' && !$search.is('.location-view, .route-view')) {
$search.addClass('location-view');
} }
if (location !== null) c3nav.add_location_to_map(location);
}, },
_locationinput_reset: function (elem) { _locationinput_reset: function (elem) {
// reset this locationinput to its last location // reset this locationinput to its last location
@ -270,9 +271,13 @@ c3nav = {
// setup level control // setup level control
c3nav._levelControl = new LevelControl().addTo(c3nav.map); c3nav._levelControl = new LevelControl().addTo(c3nav.map);
c3nav._markerLayers = {};
c3nav._routeLayers = {};
for (var i = c3nav.levels.length - 1; i >= 0; i--) { for (var i = c3nav.levels.length - 1; i >= 0; i--) {
var level = c3nav.levels[i]; var level = c3nav.levels[i];
c3nav._levelControl.addLevel(level[0], level[1]); var layerGroup = c3nav._levelControl.addLevel(level[0], level[1]);
c3nav._markerLayers[level[0]] = L.layerGroup().addTo(layerGroup);
c3nav._routeLayers[level[0]] = L.layerGroup().addTo(layerGroup);
} }
c3nav._levelControl.finalize(); c3nav._levelControl.finalize();
c3nav._levelControl.setLevel(c3nav.levels[0][0]); c3nav._levelControl.setLevel(c3nav.levels[0][0]);
@ -280,6 +285,30 @@ c3nav = {
c3nav.schedule_refresh_tile_access(); c3nav.schedule_refresh_tile_access();
}, },
clear_map: function() {
for (var level_id in c3nav._markerLayers) {
c3nav._markerLayers[level_id].clearLayers()
}
for (var level_id in c3nav._routeLayers) {
c3nav._routeLayers[level_id].clearLayers()
}
},
add_location_to_map: function(location) {
if (location.locations !== undefined) {
var bounds = EmptyBounds;
for (var i=0; i<location.locations.length; i++) {
var result = c3nav.add_location_to_map(c3nav.locations_by_id[location.locations[i]]);
bounds = bounds.extend(c3nav.add_location_to_map(c3nav.locations_by_id[location.locations[i]]));
}
return bounds;
}
var latlng = L.GeoJSON.coordsToLatLng(location.point.slice(1));
L.marker(latlng).addTo(c3nav._markerLayers[location.point[0]]);
return L.latLngBounds(
(location.bounds !== undefined) ? L.GeoJSON.coordsToLatLngs(location.bounds) : [latlng, latlng]
);
},
schedule_refresh_tile_access: function () { schedule_refresh_tile_access: function () {
window.setTimeout(c3nav.refresh_tile_access, 16000); window.setTimeout(c3nav.refresh_tile_access, 16000);
@ -291,6 +320,13 @@ c3nav = {
}; };
$(document).ready(c3nav.init); $(document).ready(c3nav.init);
EmptyBounds = {
extend: function (bounds) {
console.log(bounds);
return bounds;
}
};
LevelControl = L.Control.extend({ LevelControl = L.Control.extend({
options: { options: {
position: 'bottomright', position: 'bottomright',
@ -310,7 +346,8 @@ LevelControl = L.Control.extend({
this._tileLayers[id] = L.tileLayer('/map/' + String(id) + '/{z}/{x}/{y}.png', { this._tileLayers[id] = L.tileLayer('/map/' + String(id) + '/{z}/{x}/{y}.png', {
bounds: c3nav.bounds bounds: c3nav.bounds
}); });
this._overlayLayers[id] = L.layerGroup(); var overlay = L.layerGroup();
this._overlayLayers[id] = overlay;
var link = L.DomUtil.create('a', '', this._container); var link = L.DomUtil.create('a', '', this._container);
link.innerHTML = title; link.innerHTML = title;
@ -322,7 +359,7 @@ LevelControl = L.Control.extend({
.on(link, 'click', this._levelClick, this); .on(link, 'click', this._levelClick, this);
this._levelButtons[id] = link; this._levelButtons[id] = link;
return link; return overlay;
}, },
setLevel: function (id) { setLevel: function (id) {