when a level, space or area is origin or destination, move marker
This commit is contained in:
parent
9185c999af
commit
656ad49721
2 changed files with 31 additions and 12 deletions
|
@ -249,7 +249,7 @@ class CustomLocation:
|
||||||
'coordinates': (self.x, self.y)
|
'coordinates': (self.x, self.y)
|
||||||
}
|
}
|
||||||
|
|
||||||
def serialize(self, simple_geometry=False, geometry=True, **kwargs):
|
def serialize(self, include_type=False, simple_geometry=False, geometry=True, **kwargs):
|
||||||
result = OrderedDict((
|
result = OrderedDict((
|
||||||
('id', self.pk),
|
('id', self.pk),
|
||||||
('slug', self.pk),
|
('slug', self.pk),
|
||||||
|
@ -258,6 +258,9 @@ class CustomLocation:
|
||||||
('level', self.level.pk),
|
('level', self.level.pk),
|
||||||
('space', self.space.pk if self.space else None),
|
('space', self.space.pk if self.space else None),
|
||||||
))
|
))
|
||||||
|
if include_type:
|
||||||
|
result['type'] = 'custom'
|
||||||
|
result.move_to_end('type', last=False)
|
||||||
if simple_geometry:
|
if simple_geometry:
|
||||||
result['point'] = (self.level.pk, self.x, self.y)
|
result['point'] = (self.level.pk, self.x, self.y)
|
||||||
result['bounds'] = ((int(math.floor(self.x)), int(math.floor(self.y))),
|
result['bounds'] = ((int(math.floor(self.x)), int(math.floor(self.y))),
|
||||||
|
|
|
@ -355,16 +355,22 @@ c3nav = {
|
||||||
$details.append(c3nav._build_location_html(result.destination));
|
$details.append(c3nav._build_location_html(result.destination));
|
||||||
|
|
||||||
// add origin and destination lines
|
// add origin and destination lines
|
||||||
|
c3nav._location_point_overrides = {};
|
||||||
|
if (!c3nav._add_location_point_override(result.origin, result.items[0])) {
|
||||||
c3nav._add_line_to_route(first_primary_level, c3nav._add_intermediate_point(
|
c3nav._add_line_to_route(first_primary_level, c3nav._add_intermediate_point(
|
||||||
result.origin.point.slice(1),
|
result.origin.point.slice(1),
|
||||||
result.items[0].coordinates.slice(0, 2),
|
result.items[0].coordinates.slice(0, 2),
|
||||||
result.items[1].coordinates.slice(0, 2)
|
result.items[1].coordinates.slice(0, 2)
|
||||||
), true);
|
), true);
|
||||||
|
}
|
||||||
|
if (!c3nav._add_location_point_override(result.destination, result.items.slice(-1)[0])) {
|
||||||
c3nav._add_line_to_route(last_primary_level, c3nav._add_intermediate_point(
|
c3nav._add_line_to_route(last_primary_level, c3nav._add_intermediate_point(
|
||||||
result.destination.point.slice(1),
|
result.destination.point.slice(1),
|
||||||
result.items[result.items.length-1].coordinates.slice(0, 2),
|
result.items[result.items.length - 1].coordinates.slice(0, 2),
|
||||||
result.items[result.items.length-2].coordinates.slice(0, 2)
|
result.items[result.items.length - 2].coordinates.slice(0, 2)
|
||||||
).reverse(), true);
|
).reverse(), true);
|
||||||
|
}
|
||||||
|
c3nav.update_map_locations();
|
||||||
|
|
||||||
c3nav._firstRouteLevel = first_primary_level;
|
c3nav._firstRouteLevel = first_primary_level;
|
||||||
$route.find('span').text(result.summary);
|
$route.find('span').text(result.summary);
|
||||||
|
@ -374,6 +380,13 @@ c3nav = {
|
||||||
|
|
||||||
if (!nofly) c3nav.fly_to_bounds(true);
|
if (!nofly) c3nav.fly_to_bounds(true);
|
||||||
},
|
},
|
||||||
|
_add_location_point_override: function (location, item) {
|
||||||
|
if (location.type === 'level' || location.type === 'space' || location.type === 'area') {
|
||||||
|
c3nav._location_point_overrides[location.id] = item.coordinates.slice(0, -1);
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
return false;
|
||||||
|
},
|
||||||
_build_route_item: function (icon, text) {
|
_build_route_item: function (icon, text) {
|
||||||
var elem = $('<div class="routeitem">');
|
var elem = $('<div class="routeitem">');
|
||||||
if (icon.indexOf('.') === -1) {
|
if (icon.indexOf('.') === -1) {
|
||||||
|
@ -1057,6 +1070,7 @@ c3nav = {
|
||||||
[bounds[1][0]+600/factor, bounds[1][1]+200/factor]
|
[bounds[1][0]+600/factor, bounds[1][1]+200/factor]
|
||||||
];
|
];
|
||||||
},
|
},
|
||||||
|
_location_point_overrides: {},
|
||||||
_add_location_to_map: function(location, icon) {
|
_add_location_to_map: function(location, icon) {
|
||||||
// add a location to the map as a marker
|
// add a location to the map as a marker
|
||||||
if (location.locations) {
|
if (location.locations) {
|
||||||
|
@ -1066,7 +1080,9 @@ c3nav = {
|
||||||
}
|
}
|
||||||
return bounds;
|
return bounds;
|
||||||
}
|
}
|
||||||
var latlng = L.GeoJSON.coordsToLatLng(location.point.slice(1));
|
|
||||||
|
var point = c3nav._location_point_overrides[location.id] || location.point.slice(1),
|
||||||
|
latlng = L.GeoJSON.coordsToLatLng(point);
|
||||||
L.marker(latlng, {
|
L.marker(latlng, {
|
||||||
icon: icon
|
icon: icon
|
||||||
}).bindPopup(location.elem+$('#popup-buttons').html(), c3nav._add_map_padding({
|
}).bindPopup(location.elem+$('#popup-buttons').html(), c3nav._add_map_padding({
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue