mirror of
https://github.com/umap-project/umap.git
synced 2025-04-29 11:52:38 +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._default_extent = true
|
||||||
this.options.name = L._('Untitled map')
|
this.options.name = L._('Untitled map')
|
||||||
let data = L.Util.queryString('data', null)
|
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')
|
const dataFormat = L.Util.queryString('dataFormat', 'geojson')
|
||||||
if (dataUrl) {
|
if (dataUrls.length) {
|
||||||
|
for (let dataUrl of dataUrls) {
|
||||||
dataUrl = decodeURIComponent(dataUrl)
|
dataUrl = decodeURIComponent(dataUrl)
|
||||||
dataUrl = this.localizeUrl(dataUrl)
|
dataUrl = this.localizeUrl(dataUrl)
|
||||||
dataUrl = this.proxyUrl(dataUrl)
|
dataUrl = this.proxyUrl(dataUrl)
|
||||||
const datalayer = this.createDataLayer()
|
const datalayer = this.createDataLayer()
|
||||||
datalayer.importFromUrl(dataUrl, dataFormat)
|
datalayer.importFromUrl(dataUrl, dataFormat)
|
||||||
|
}
|
||||||
} else if (data) {
|
} else if (data) {
|
||||||
data = decodeURIComponent(data)
|
data = decodeURIComponent(data)
|
||||||
const datalayer = this.createDataLayer()
|
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"
|
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)
|
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 test_map_preview_can_load_remote_csv(page, live_server, tilelayer):
|
||||||
def handle(route):
|
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
|
# Intercept the route to the proxy
|
||||||
page.route("*/**/ajax-proxy/**", handle)
|
page.route("*/**/ajax-proxy/**", handle)
|
||||||
|
|
Loading…
Reference in a new issue