- // since .toBBoxString() doesn't round numbers
- return [
- map.getBounds().getSouthWest().lng.toFixed(5), // left
- map.getBounds().getNorthEast().lat.toFixed(5), // top
- map.getBounds().getNorthEast().lng.toFixed(5), // right
- map.getBounds().getSouthWest().lat.toFixed(5) // bottom
- ].join(',');
+ var bounds = map.getBounds();
+ var west = bounds.getWest();
+ var east = bounds.getEast();
+
+ if ((east - west) >= 360) { // covers more than whole planet
+ west = map.getCenter().lng - 179.999;
+ east = map.getCenter().lng + 179.999;
+ }
+ east = L.latLng(77, east).wrap().lng;
+ west = L.latLng(77, west).wrap().lng;
+
+ return [
+ west.toFixed(5), // left
+ bounds.getNorth().toFixed(5), // top
+ east.toFixed(5), // right
+ bounds.getSouth().toFixed(5) // bottom
+ ].join(',');
+}
+
+
+// *********************************************************
+// PAGE HELPERS
+// *********************************************************
+
+function generate_full_api_url(endpoint_name, params) {
+ //
+ // `&a=&b=&c=1` => '&c=1'
+ var param_names = Object.keys(params);
+ for (var i = 0; i < param_names.length; i += 1) {
+ var val = params[param_names[i]];
+ if (typeof (val) === 'undefined' || val === '' || val === null) {
+ delete params[param_names[i]];
+ }
+ }
+
+ var api_url = get_config_value('Nominatim_API_Endpoint') + endpoint_name + '.php?'
+ + $.param(params);
+ return api_url;