Skip to content

Commit

Permalink
fix(admin area loader): fix the admin area loader feature
Browse files Browse the repository at this point in the history
  • Loading branch information
amoncaldas committed Jul 19, 2021
1 parent 30e92a8 commit d140ab6
Show file tree
Hide file tree
Showing 2 changed files with 28 additions and 14 deletions.
2 changes: 1 addition & 1 deletion src/fragments/map-view/MapView.vue
Original file line number Diff line number Diff line change
Expand Up @@ -36,7 +36,7 @@
@markerClicked="markerClicked">
</map-view-markers>

<!--render isochrones polygons -->
<!--render polygons -->
<template v-if="polygons">
<template v-for="(polygon, index) in polygons">
<l-polygon v-if="polygon.properties.visible"
Expand Down
40 changes: 27 additions & 13 deletions src/support/admin-area-loader.js
Original file line number Diff line number Diff line change
Expand Up @@ -110,17 +110,11 @@ class AdminAreaLoader {
for (let key in data) {
let area = data[key]
if (area.geojson.type !== 'Point') {
let hasCoordinatesAsMultyPolygon = Array.isArray(area.geojson.coordinates[0]) && Array.isArray(area.geojson.coordinates[0][0])
let hasCoordinatesAsMultiPolygon = Array.isArray(area.geojson.coordinates[0]) && Array.isArray(area.geojson.coordinates[0][0])

// Treat as multipolygon in both cases
if (area.geojson.type === 'MultiPolygon' || hasCoordinatesAsMultyPolygon ) {
let splitPolygons = PolygonUtils.splitMultiPolygonIntoPolygons(area.geojson)
for (let pKey in splitPolygons) {
let adjustedPolygon = this.adjustPolygon(splitPolygons[pKey], place)
if (adjustedPolygon) {
polygons.push(adjustedPolygon)
}
}
if (area.geojson.type === 'MultiPolygon' || hasCoordinatesAsMultiPolygon ) {
polygons = this.buildPolygonsFromMultiPolygon(area.geojson, place)
} else {
let polygon = {geometry: {coordinates: area.geojson.coordinates}, type: area.geojson.type}
let adjustedPolygon = this.adjustPolygon(polygon, place)
Expand All @@ -137,6 +131,25 @@ class AdminAreaLoader {
}
return []
}

/**
* Build a polygon collection from a multipolygon area object
* @param {Geojson} area
* @param {Place} place
* @returns {Array}
*/
buildPolygonsFromMultiPolygon (AreaGeojson, place) {
let polygons = []
// Treat as multipolygon in both cases
let splitPolygons = PolygonUtils.splitMultiPolygonIntoPolygons(AreaGeojson)
for (let pKey in splitPolygons) {
let adjustedPolygon = this.adjustPolygon(splitPolygons[pKey], place)
if (adjustedPolygon) {
polygons.push(adjustedPolygon)
}
}
return polygons
}
/**
* Validate a polygon
* @param {*} polygon
Expand All @@ -160,10 +173,11 @@ class AdminAreaLoader {
}
flattenCoordinates = cleanCoords
}
polygon = {geometry: {coordinates: flattenCoordinates}, type: polygon.type}
polygon.label = place.placeName
polygon.color = theme.primary
polygon.fillColor = 'transparent'
polygon = {geometry: {coordinates: flattenCoordinates}, type: polygon.type, properties: {}}
polygon.properties.label = place.placeName
polygon.properties.color = theme.primary
polygon.properties.visible = true
polygon.properties.fillColor = 'transparent'
return polygon
}
}
Expand Down

0 comments on commit d140ab6

Please sign in to comment.