Closed Rastopapola closed 3 weeks ago
Added in latest LANIS Update.
You can now specify the allowed drawing area by setting either "data-bounds" on the container element or config[ "tools" ][ "bounds" ] to a GeoJSON string containing polygons.
Additionally you can set to show the boundaries on the map using config[ "tools" ][ "show_bounds" ].
Example:
<main id="container" data-editable="true" data-bounds='{"type":"FeatureCollection","features":[{"type":"Feature","geometry":{"type":"Polygon","coordinates":[[[385947.1733847084,5587420.133948028],[385924.7215815909,5587575.524501444],[385983.8340881849,5587720.975589848],[386108.3204437366,5587816.649279207],[386128.61293018516,5587825.002716699],[386287.15210903366,5587844.293282578],[386433.12464682607,5587779.495015839],[386525.16063342174,5587648.972319218],[386533.51636313583,5587625.702029063],[386546.62565086246,5587472.317275605],[386481.9349259469,5587332.625306874],[386356.47850408487,5587243.409712766],[386337.3796933098,5587236.249623489],[386187.71257841075,5587220.454999909],[386049.20810348407,5587279.329662044],[385956.72279009596,5587398.057006087],[385947.1733847084,5587420.133948028]]]},"properties":null},{"type":"Feature","geometry":{"type":"Polygon","coordinates":[[[386993.0181936734,5587227.7525485065],[386633.3370473852,5587978.680763736],[386923.60604263534,5588546.60966601],[387617.727553016,5588420.403243283],[387642.9683352116,5587934.508515782],[387232.80562453216,5588029.163332827],[387333.7687533148,5587549.578926463],[387655.5887263095,5587530.647963054],[387377.9401221572,5586893.305528278],[386993.0181936734,5587227.7525485065]]]},"properties":null},{"type":"Feature","geometry":{"type":"Polygon","coordinates":[[[385705.73830169474,5586685.064930778],[386551.3045052493,5587019.511951006],[386993.0181936734,5586697.685573051],[386658.57782958087,5586306.445662595],[385970.76651474915,5586173.928918731],[385705.73830169474,5586685.064930778]]]},"properties":null}],"crs":{"type":"name","properties":{"name":"urn:ogc:def:crs:EPSG::25832"}},"area":1928455.8138341408}'>
Inside Config:
"tools":
{
"bounds": '{"type":"FeatureCollection","features":[{"type":"Feature","geometry":{"type":"Polygon","coordinates":[[[385947.1733847084,5587420.133948028],[385924.7215815909,5587575.524501444],[385983.8340881849,5587720.975589848],[386108.3204437366,5587816.649279207],[386128.61293018516,5587825.002716699],[386287.15210903366,5587844.293282578],[386433.12464682607,5587779.495015839],[386525.16063342174,5587648.972319218],[386533.51636313583,5587625.702029063],[386546.62565086246,5587472.317275605],[386481.9349259469,5587332.625306874],[386356.47850408487,5587243.409712766],[386337.3796933098,5587236.249623489],[386187.71257841075,5587220.454999909],[386049.20810348407,5587279.329662044],[385956.72279009596,5587398.057006087],[385947.1733847084,5587420.133948028]]]},"properties":null},{"type":"Feature","geometry":{"type":"Polygon","coordinates":[[[386993.0181936734,5587227.7525485065],[386633.3370473852,5587978.680763736],[386923.60604263534,5588546.60966601],[387617.727553016,5588420.403243283],[387642.9683352116,5587934.508515782],[387232.80562453216,5588029.163332827],[387333.7687533148,5587549.578926463],[387655.5887263095,5587530.647963054],[387377.9401221572,5586893.305528278],[386993.0181936734,5587227.7525485065]]]},"properties":null},{"type":"Feature","geometry":{"type":"Polygon","coordinates":[[[385705.73830169474,5586685.064930778],[386551.3045052493,5587019.511951006],[386993.0181936734,5586697.685573051],[386658.57782958087,5586306.445662595],[385970.76651474915,5586173.928918731],[385705.73830169474,5586685.064930778]]]},"properties":null}],"crs":{"type":"name","properties":{"name":"urn:ogc:def:crs:EPSG::25832"}},"area":1928455.8138341408}',
"show_bounds": true
}
Status quo
Aktuell können Nutzer überall zeichnen wo sie wollen.
Enhancement
Für gewisse Anwendungsfälle kann es sinnvoll sein die Eingabe nur in spezifischen Bereichen zu erlauben. Diese Informationen müssten dem Kartenclient zum Start übergeben werden. Erneut ließe sich das über ein entsprechendes **data-*** Attribut lösen, z.B.
data-allowedArea
:Bspw.:
data-allowedArea
Dem Attribut kann eine Geometrie (bspw. als geojson) mitgegeben werden. Auch Multipolygone sind hierbei denkbar, falls die erlaubten Bereiche räumlich voneinander getrennt liegen.
Darstellung
Der Nutzer muss erkennen können wo sich der erlaubte bzw. nicht erlaubte Bereich befinden. Der nicht-erlaubte Bereich (außerhalb des erlaubten Bereichs) sollte rot schraffiert und damit deutlich als "nicht benutzbar" dargestellt werden. Die Grenze zwischen erlaubtem und nicht-erlaubtem Bereich muss deutlich erkennbar sein.
Funktionsweise
Die Grenze des erlaubten Bereichs kann zum Snappen genutzt werden, um saubere Abgrenzungen zu ermöglichen.
Zeichnen im nicht-erlaubten Bereich
Es sind zwei Arten denkbar, wie der Nutzer darauf hingewiesen wird, dass dort nicht gezeichnet werden darf, bzw. wie dieser bei der Korrektur unterstützt werden kann:
Ideen