Skip to content

Commit

Permalink
- Fix Map set bbox from center and zoom
Browse files Browse the repository at this point in the history
  • Loading branch information
afabiani committed Mar 11, 2022
1 parent f7ed806 commit 17eda98
Show file tree
Hide file tree
Showing 4 changed files with 15 additions and 10 deletions.
15 changes: 9 additions & 6 deletions geonode/base/models.py
Original file line number Diff line number Diff line change
Expand Up @@ -1428,7 +1428,7 @@ def set_ll_bbox_polygon(self, bbox, srid="EPSG:4326"):
except Exception as e:
raise GeoNodeException(e)

def set_bounds_from_center_and_zoom(self, center_x, center_y, zoom):
def set_bounds_from_center_and_zoom(self, center_x, center_y, center_srid, zoom):
"""
Calculate zoom level and center coordinates in mercator.
"""
Expand All @@ -1440,10 +1440,13 @@ def set_bounds_from_center_and_zoom(self, center_x, center_y, zoom):

# covert center in lat lon
def get_lon_lat():
wgs84 = Proj(init='epsg:4326')
mercator = Proj(init='epsg:3857')
lon, lat = transform(mercator, wgs84, center_x, center_y)
return lon, lat
if not center_srid or center_srid.lower() != 'epsg:4326':
wgs84 = Proj(init='epsg:4326')
mercator = Proj(init='epsg:3857')
lon, lat = transform(mercator, wgs84, center_x, center_y)
return lon, lat
else:
return center_x, center_y

# calculate the degree length at this latitude
def deg_len():
Expand All @@ -1469,7 +1472,7 @@ def deg_len():
bbox_y0 = lat - distance_y_degrees
bbox_y1 = lat + distance_y_degrees
self.srid = 'EPSG:4326'
self.set_bbox_polygon((bbox_x0, bbox_y0, bbox_x1, bbox_y1), self.srid)
self.set_bbox_polygon((bbox_x0, bbox_x1, bbox_y0, bbox_y1), self.srid)

def set_bounds_from_bbox(self, bbox, srid):
"""
Expand Down
3 changes: 3 additions & 0 deletions geonode/maps/models.py
Original file line number Diff line number Diff line change
Expand Up @@ -186,10 +186,12 @@ def update_from_viewer(self, conf, context=None):
_map = conf.get("map", {})
center = _map.get("center", settings.DEFAULT_MAP_CENTER)
self.zoom = _map.get("zoom", settings.DEFAULT_MAP_ZOOM)
center_srid = 'EPSG:4326'

if isinstance(center, dict):
self.center_x = center.get('x')
self.center_y = center.get('y')
center_srid = center.get('crs', center_srid)
else:
self.center_x, self.center_y = center

Expand All @@ -202,6 +204,7 @@ def update_from_viewer(self, conf, context=None):
self.set_bounds_from_center_and_zoom(
self.center_x,
self.center_y,
center_srid,
self.zoom)

if self.projection is None or self.projection == '':
Expand Down
5 changes: 2 additions & 3 deletions geonode/thumbs/thumbnails.py
Original file line number Diff line number Diff line change
Expand Up @@ -33,7 +33,6 @@
from geonode.geoserver.helpers import OGC_Servers_Handler
from geonode.utils import get_layer_name, get_layer_workspace
from geonode.thumbs import utils
from geonode.base.bbox_utils import BBOXHelper
from geonode.thumbs.exceptions import ThumbnailError

logger = logging.getLogger(__name__)
Expand Down Expand Up @@ -114,9 +113,9 @@ def create_thumbnail(
if bbox:
bbox = utils.clean_bbox(bbox, target_crs)
elif instance.ll_bbox_polygon:
_bbox = BBOXHelper(instance.ll_bbox_polygon.extent)
_bbox = instance.ll_bbox_polygon.extent
srid = instance.ll_bbox_polygon.srid
bbox = [_bbox.xmin, _bbox.xmax, _bbox.ymin, _bbox.ymax, f"EPSG:{srid}"]
bbox = [_bbox[0], _bbox[1], _bbox[2], _bbox[3], f"EPSG:{srid}"]
bbox = utils.clean_bbox(bbox, target_crs)
else:
compute_bbox_from_layers = True
Expand Down
2 changes: 1 addition & 1 deletion geonode/thumbs/utils.py
Original file line number Diff line number Diff line change
Expand Up @@ -225,7 +225,7 @@ def get_map(
layers=layers,
styles=styles,
srs=bbox[-1] if bbox else None,
bbox=[bbox[0], bbox[2], bbox[1], bbox[3]] if bbox else None,
bbox=[bbox[0], bbox[1], bbox[2], bbox[3]] if bbox else None,
size=(width, height),
format=mime_type,
transparent=True,
Expand Down

0 comments on commit 17eda98

Please sign in to comment.