mirror of
https://github.com/umap-project/umap.git
synced 2025-04-28 19:42:36 +02:00
feat: handle multiple dataUrl parameters on map load
This commit is contained in:
parent
adc1cf460f
commit
b426d212f0
2 changed files with 46 additions and 9 deletions
|
@ -184,14 +184,17 @@ U.Map = L.Map.extend({
|
|||
this._default_extent = true
|
||||
this.options.name = L._('Untitled map')
|
||||
let data = L.Util.queryString('data', null)
|
||||
let dataUrl = L.Util.queryString('dataUrl', null)
|
||||
const url = new URL(window.location.href)
|
||||
const dataUrls = new URLSearchParams(url.search).getAll('dataUrl')
|
||||
const dataFormat = L.Util.queryString('dataFormat', 'geojson')
|
||||
if (dataUrl) {
|
||||
dataUrl = decodeURIComponent(dataUrl)
|
||||
dataUrl = this.localizeUrl(dataUrl)
|
||||
dataUrl = this.proxyUrl(dataUrl)
|
||||
const datalayer = this.createDataLayer()
|
||||
datalayer.importFromUrl(dataUrl, dataFormat)
|
||||
if (dataUrls.length) {
|
||||
for (let dataUrl of dataUrls) {
|
||||
dataUrl = decodeURIComponent(dataUrl)
|
||||
dataUrl = this.localizeUrl(dataUrl)
|
||||
dataUrl = this.proxyUrl(dataUrl)
|
||||
const datalayer = this.createDataLayer()
|
||||
datalayer.importFromUrl(dataUrl, dataFormat)
|
||||
}
|
||||
} else if (data) {
|
||||
data = decodeURIComponent(data)
|
||||
const datalayer = this.createDataLayer()
|
||||
|
|
|
@ -21,6 +21,21 @@ GEOJSON = {
|
|||
}
|
||||
],
|
||||
}
|
||||
GEOJSON2 = {
|
||||
"type": "FeatureCollection",
|
||||
"features": [
|
||||
{
|
||||
"type": "Feature",
|
||||
"properties": {
|
||||
"name": "Montmorency Falls",
|
||||
},
|
||||
"geometry": {
|
||||
"type": "Point",
|
||||
"coordinates": [-71.14, 46.89],
|
||||
},
|
||||
}
|
||||
],
|
||||
}
|
||||
CSV = "name,latitude,longitude\nNiagara Falls,43.08,-79.04"
|
||||
|
||||
|
||||
|
@ -43,10 +58,29 @@ def test_map_preview_can_load_remote_geojson(page, live_server, tilelayer):
|
|||
expect(markers).to_have_count(1)
|
||||
|
||||
|
||||
def test_map_preview_can_load_mutiple_remote_geojson(page, live_server, tilelayer):
|
||||
def handle(route):
|
||||
if "2" in route.request.url:
|
||||
route.fulfill(json=GEOJSON2)
|
||||
else:
|
||||
route.fulfill(json=GEOJSON)
|
||||
|
||||
# Intercept the route to the proxy
|
||||
page.route("*/**/ajax-proxy/**", handle)
|
||||
|
||||
page.goto(
|
||||
(
|
||||
f"{live_server.url}/map/?"
|
||||
"dataUrl=http://some.org/geo.json&dataUrl=http://some.org/geo2.json"
|
||||
)
|
||||
)
|
||||
markers = page.locator(".leaflet-marker-icon")
|
||||
expect(markers).to_have_count(2)
|
||||
|
||||
|
||||
def test_map_preview_can_load_remote_csv(page, live_server, tilelayer):
|
||||
def handle(route):
|
||||
csv = """name,latitude,longitude\nNiagara Falls,43.08,-79.04"""
|
||||
route.fulfill(body=csv)
|
||||
route.fulfill(body=CSV)
|
||||
|
||||
# Intercept the route to the proxy
|
||||
page.route("*/**/ajax-proxy/**", handle)
|
||||
|
|
Loading…
Reference in a new issue