Merge branch 'master' into 68-sl-formatting

This commit is contained in:
Norbert Renner 2021-04-10 12:48:10 +02:00
commit 1330317f1d
112 changed files with 3368 additions and 741 deletions

View file

@ -1,4 +1,5 @@
LICENSE
Dockerfile
dist/
*.zip
yarn.lock
@ -10,8 +11,7 @@ yarn.lock
layers/
locales/*.json
resources/boundaries/
*.sh
resources/standalone/*.sh
profiles2/
Dockerfile
tests/**/*.json
tests/**/*.gpx

View file

@ -1,5 +1,30 @@
# BRouter-Web Changelog
## 0.16.0 (2021-03-30)
### New Features
- Locations (POIs) layers powered by Overpass API available in optional layers (under "More") and as custom query in "Custom layers" - by [@stesie](https://github.com/stesie) ([#106](https://github.com/nrenner/brouter-web/issues/106), [#384](https://github.com/nrenner/brouter-web/pull/384))
- Message informs about new versions since last visit, "What's new?" button in "About" - by [@bagage](https://github.com/bagage) ([#372](https://github.com/nrenner/brouter-web/pull/372))
### Improvements
- Confirm "Delete Route" with Enter key (after opening "Clear" dialog with Backspace key) - by [@mjaschen](https://github.com/mjaschen) ([#385](https://github.com/nrenner/brouter-web/issues/385))
- Improve mobile responsivity (full screen dialogs and more) - by [@bagage](https://github.com/bagage) ([#296](https://github.com/nrenner/brouter-web/issues/296))
- Gray out unselectable layers below minimum zoom - by [@bagage](https://github.com/bagage) ([#381](https://github.com/nrenner/brouter-web/pull/381))
- Add message if no elevation data is available - by [@bagage](https://github.com/bagage) ([#365](https://github.com/nrenner/brouter-web/issues/365))
- Size limit for loading a track increased to 10 MiB ([dd34064](https://github.com/nrenner/brouter-web/commit/dd34064e8c09f1bc6b11e2e14e1bb83d41a61ed9))
- Update France Go area to 10km - by [@bagage](https://github.com/bagage) ([1c13587](https://github.com/nrenner/brouter-web/commit/1c135879746f670b1a854fcbe55ab5dabacfa0a9))
### Bugfixes
- Flickering search field on Firefox @ Android - by [@mjaschen](https://github.com/mjaschen) ([#393](https://github.com/nrenner/brouter-web/issues/393))
- Custom layers table width and type translations added - by [@bagage](https://github.com/bagage) ([#379](https://github.com/nrenner/brouter-web/pull/379))
### Local installation / development
- New config entries `overpassBaseUrl` and `trackSizeLimit` ([config.template.js](https://github.com/nrenner/brouter-web/blob/a2717ac10298f5e9689b420a0af0eb310eababd3/config.template.js#L131-L134))
## 0.15.1 (2021-01-25)
### Improvements [de, fr]

View file

@ -134,3 +134,9 @@ Copyright (c) 2018 Norbert Renner and [contributors](https://github.com/nrenner/
Copyright (c) 2015, Mapbox All rights reserved; [BSD-2-Clause License](https://github.com/mapbox/tokml/blob/master/LICENSE.md)
- [Jest](https://github.com/facebook/jest)
Copyright (c) Facebook, Inc. and its affiliates; [MIT License](https://github.com/facebook/jest/blob/master/LICENSE)
- [overpass-layer](https://github.com/plepe/overpass-layer)
Copyright (c) 2020 Stephan Bösch-Plepelits; [MIT License](https://github.com/plepe/overpass-layer/blob/master/LICENSE)
- [maki](https://github.com/mapbox/maki)
[CC0-1.0 License](https://github.com/mapbox/maki/blob/master/LICENSE.txt)
- [temaki](https://github.com/ideditor/temaki)
[CC0-1.0 License](https://github.com/ideditor/temaki/blob/main/LICENSE.md)

5
babel.config.js Normal file
View file

@ -0,0 +1,5 @@
module.exports = {
presets: [['@babel/preset-env', {}]],
sourceType: 'script',
exclude: [/node_modules\/(?!overpass-layer\/).*/],
};

View file

@ -1,5 +0,0 @@
{
"presets": [["@babel/preset-env", {}]],
"sourceType": "script",
"exclude": ["node_modules/**"]
}

View file

@ -127,4 +127,9 @@
// regex needs to be in sync with server, see ServerHandler.getTrackName()
BR.conf.tracknameAllowedChars = 'a-zA-Z0-9 \\._\\-';
BR.conf.overpassBaseUrl = 'https://overpass.kumi.systems/api/interpreter';
// File size limit in kb for loading tracks
BR.conf.trackSizeLimit = 1024 * 10;
})();

View file

@ -45,6 +45,37 @@ table.dataTable {
flex: auto;
}
/* reduce title font size in overpass popups */
.leaflet-popup-content h1 {
font-size: 1.2rem;
}
.overpass-tags th {
vertical-align: top;
}
.overpass-layer-icon .sign > * {
position: absolute;
top: -34px;
margin: auto;
display: inline-block;
font-size: 11px;
}
.overpass-layer-icon .icon-white {
color: white;
}
.overpass-layer-icon .icon-invert {
-webkit-filter: invert(1);
filter: invert(1);
}
.jstree-themeicon-custom {
background-size: 11px !important;
width: 15px !important;
}
/* wrap toolbar controls */
.leaflet-top.leaflet-left {
bottom: 0;
@ -215,11 +246,14 @@ input#trackname:focus:invalid {
/* map click/drag selects text in controls in Firefox because of display flex */
-moz-user-select: none;
}
.leaflet-control-container,
#message .alert {
.leaflet-control-container {
-moz-user-select: text;
}
#message {
#notification_jar .alert {
-moz-user-select: text;
margin-bottom: 10px;
}
#notification_jar {
position: absolute;
margin: 10px 46px; /* 10 + 26 + 10 */
z-index: 3001;
@ -242,10 +276,6 @@ input#trackname:focus:invalid {
display: flex;
}
#profile_buttons {
padding-top: 4px;
}
/* track messages (data tab) */
#tab_data,
.CodeMirror {
@ -438,6 +468,19 @@ button.btn {
margin: -6px 0 6px 20px;
}
/* "What's new?" (Change Log) */
#whatsnew h2 {
margin: 2rem 0;
border-bottom: 1px solid #dee2e6;
padding-bottom: 0.5rem;
font-size: 1.3rem;
}
#whatsnew h3 {
margin-bottom: 1rem;
font-size: 1.1rem;
}
/*
* DataTables
*/
@ -783,3 +826,141 @@ table.dataTable.display tbody tr:hover.selected {
left: 50%;
transform: translate(-50%, -50%);
}
/* Gray out non selectable layers (zoom out of scope, etc.) */
.leaflet-control-layers-selector[disabled] ~ span {
color: #777;
}
/* make modals fullscreen on small devices (code from bootstrap 5) */
.modal-fullscreen {
width: 100vw;
max-width: none;
height: 100%;
margin: 0;
}
.modal-fullscreen .modal-content {
height: 100%;
border: 0;
border-radius: 0;
}
.modal-fullscreen .modal-header {
border-radius: 0;
}
.modal-fullscreen .modal-body {
overflow-y: auto;
}
.modal-fullscreen .modal-footer {
border-radius: 0;
}
@media (max-width: 575.98px) {
.modal-fullscreen-sm-down {
width: 100vw;
max-width: none;
height: 100%;
margin: 0;
}
.modal-fullscreen-sm-down .modal-content {
height: 100%;
border: 0;
border-radius: 0;
}
.modal-fullscreen-sm-down .modal-header {
border-radius: 0;
}
.modal-fullscreen-sm-down .modal-body {
overflow-y: auto;
}
.modal-fullscreen-sm-down .modal-footer {
border-radius: 0;
}
}
@media (max-width: 767.98px) {
.modal-fullscreen-md-down {
width: 100vw;
max-width: none;
height: 100%;
margin: 0;
}
.modal-fullscreen-md-down .modal-content {
height: 100%;
border: 0;
border-radius: 0;
}
.modal-fullscreen-md-down .modal-header {
border-radius: 0;
}
.modal-fullscreen-md-down .modal-body {
overflow-y: auto;
}
.modal-fullscreen-md-down .modal-footer {
border-radius: 0;
}
}
@media (max-width: 991.98px) {
.modal-fullscreen-lg-down {
width: 100vw;
max-width: none;
height: 100%;
margin: 0;
}
.modal-fullscreen-lg-down .modal-content {
height: 100%;
border: 0;
border-radius: 0;
}
.modal-fullscreen-lg-down .modal-header {
border-radius: 0;
}
.modal-fullscreen-lg-down .modal-body {
overflow-y: auto;
}
.modal-fullscreen-lg-down .modal-footer {
border-radius: 0;
}
}
@media (max-width: 1199.98px) {
.modal-fullscreen-xl-down {
width: 100vw;
max-width: none;
height: 100%;
margin: 0;
}
.modal-fullscreen-xl-down .modal-content {
height: 100%;
border: 0;
border-radius: 0;
}
.modal-fullscreen-xl-down .modal-header {
border-radius: 0;
}
.modal-fullscreen-xl-down .modal-body {
overflow-y: auto;
}
.modal-fullscreen-xl-down .modal-footer {
border-radius: 0;
}
}
@media (max-width: 1399.98px) {
.modal-fullscreen-xxl-down {
width: 100vw;
max-width: none;
height: 100%;
margin: 0;
}
.modal-fullscreen-xxl-down .modal-content {
height: 100%;
border: 0;
border-radius: 0;
}
.modal-fullscreen-xxl-down .modal-header {
border-radius: 0;
}
.modal-fullscreen-xxl-down .modal-body {
overflow-y: auto;
}
.modal-fullscreen-xxl-down .modal-footer {
border-radius: 0;
}
}

View file

@ -81,6 +81,7 @@ var paths = {
.concat('css/*.css'),
images: mainNpmFiles().filter((f) => RegExp('.*.+(png|gif|svg)', 'i').test(f)),
fonts: mainNpmFiles().filter((f) => RegExp('font-awesome/fonts/.*', 'i').test(f)),
changelog: 'CHANGELOG.md',
locales: 'locales/*.json',
layers: 'layers/**/*.geojson',
layersDestName: 'layers.js',
@ -189,7 +190,8 @@ gulp.task('boundaries', function () {
});
gulp.task('changelog', function (cb) {
var content = 'BR.changelog = `' + marked(fs.readFileSync('./CHANGELOG.md', 'utf-8')) + '`';
var content = 'BR.changelog = `' + marked(fs.readFileSync(paths.changelog, 'utf-8')) + '`';
content = content.replace(/<h1.*<\/h1>/i, '');
fs.writeFile(paths.dest + '/changelog.js', content, cb);
});
@ -207,6 +209,7 @@ gulp.task('watch', function () {
remember.forget('scripts', event.path);
}
});
gulp.watch(paths.changelog, gulp.series('changelog', 'reload'));
gulp.watch(paths.locales, gulp.series('locales', 'reload'));
gulp.watch(paths.styles, gulp.series('styles', 'reload'));
gulp.watch(paths.layersConfig, gulp.series('layers_config', 'reload'));
@ -283,13 +286,16 @@ gulp.task('bump:json', function () {
});
gulp.task('bump:html', function () {
const version = nextVersion || pkg.version;
return gulp
.src('./index.html')
.pipe(replace(/<sup class="version">(.*)<\/sup>/, '<sup class="version">' + pkg.version + '</sup>'))
.pipe(replace(/BR.version = '(.*?)';/, "BR.version = '" + pkg.version + "';"))
.pipe(replace(/<sup class="version">(.*)<\/sup>/, '<sup class="version">' + version + '</sup>'))
.pipe(replace(/BR.version = '(.*?)';/, "BR.version = '" + version + "';"))
.pipe(gulp.dest('.'));
});
gulp.task('bump', gulp.series('bump:json', 'bump:html'));
gulp.task('release:commit', function () {
return gulp.src(['./index.html', './package.json']).pipe(git.commit('release: ' + nextVersion));
});
@ -468,7 +474,7 @@ gulp.task(
'release',
gulp.series(
'release:init',
'bump:json',
'bump',
'release:commit',
'release:tag',
'release:push',

View file

@ -11,6 +11,7 @@
<link rel="stylesheet" href="dist/brouter-web.css" />
<!-- endinject -->
</head>
<body class="flexcolumn">
<nav class="navbar navbar-expand-md navbar-dark bg-dark">
<button
@ -25,7 +26,7 @@
<span class="fa fa-bars"></span>
</button>
<a class="navbar-brand order-md-last" href="#" data-toggle="modal" data-target="#about"
>BRouter-Web <sup class="version">0.15.1</sup></a
>BRouter-Web <sup class="version">0.16.0</sup></a
>
<div class="collapse navbar-collapse" id="collapsingNavbar">
<div class="navbar-nav">
@ -70,7 +71,6 @@
<div class="nav-item dropdown">
<a
class="nav-link dropdown-toggle"
href=""
data-toggle="dropdown"
href="#"
role="button"
@ -81,8 +81,10 @@
data-i18n-options='{
"tracksAction": "$t(navbar.load.tracks)",
"tracksKey": "O",
"trackAsRouteAction": "$t(trackasroute.title)",
"trackAsRouteKey": "$t(keyboard.shift)+O",
"nogosAction": "$t(navbar.load.nogos)",
"nogosKey": "$t(keyboard.shift)+O"
"nogosKey": "$t(keyboard.shift)+N"
}'
title="Load route"
>
@ -100,7 +102,7 @@
class="dropdown-item"
data-i18n="trackasroute.title"
data-toggle="modal"
data-target="#loadedittrackdlg"
data-target="#loadedittrack"
href="#"
id="navbarLoadEditTracks"
>Track as Route</a
@ -140,7 +142,7 @@
aria-labelledby="Credits window"
aria-hidden="true"
>
<div class="modal-dialog" role="document">
<div class="modal-dialog modal-fullscreen-md-down" role="document">
<div class="modal-content">
<div class="modal-header">
<h4 class="modal-title" data-i18n="credits.title">Credits</h4>
@ -171,7 +173,11 @@
<dd data-i18n="[html]credits.boundaries">
Administrative Boundaries:
<a href="https://osm-boundaries.com" target="_blank">OSM-Boundaries</a>,
<a href="https://overpass-api.de/" target="_blank">Overpass API</a>
<a href="https://overpass-api.de/" class="overpass-url" target="_blank">Overpass API</a>
</dd>
<dd data-i18n="[html]credits.pois">
Locations (POIs):
<a href="https://overpass-api.de/" class="overpass-url" target="_blank">Overpass API</a>
</dd>
<dt data-i18n="credits.elevation-data">Elevation data</dt>
<dd>
@ -181,6 +187,11 @@
<h5 data-i18n="credits.map-tiles">Map tiles</h5>
<dl id="credits-maps"></dl>
</div>
<div class="modal-footer">
<button type="button" class="btn btn-primary" data-i18n="modal.close" data-dismiss="modal">
Close
</button>
</div>
</div>
</div>
</div>
@ -194,7 +205,7 @@
aria-labelledby="Layers window"
aria-hidden="true"
>
<div class="modal-dialog modal-lg" role="document">
<div class="modal-dialog modal-lg modal-fullscreen-md-down" role="document">
<div class="modal-content">
<div class="modal-header">
<h4 class="modal-title" data-i18n="layers.customize">Customize layers</h4>
@ -203,24 +214,26 @@
</button>
</div>
<div class="modal-body">
<input
class="form-control"
type="text"
id="layer_name"
spellcheck="true"
wrap="off"
data-i18n="[placeholder]layers.placeholder-layer-name"
placeholder="Custom layer name. (ex: OpenStreetMap)"
/>
<input
class="form-control"
type="text"
id="layer_url"
spellcheck="false"
wrap="off"
data-i18n="[placeholder]layers.placeholder-layer-url"
placeholder="Custom layer URL. (ex: https://{s}.tile.openstreetmap.org/{z}/{x}/{y}.png)"
/>
<div class="form-group">
<label for="layer_name" data-i18n="layers.custom-layer-name-label">Custom layer name</label>
<input class="form-control" type="text" id="layer_name" spellcheck="true" wrap="off" />
<p class="help-block" data-i18n="layers.custom-layer-name-helptext">ex: OpenStreetMap</p>
</div>
<div class="form-group">
<label for="layer_name" data-i18n="layers.custom-layer-url-label"
>Custom layer URL/Query</label
>
<input class="form-control" type="text" id="layer_url" spellcheck="false" wrap="off" />
<p class="help-block">
<span data-i18n="layers.custom-layer-url-helptext-normal"
>URL for normal layers, ex: https://{s}.tile.openstreetmap.org/{z}/{x}/{y}.png</span
><br />
<span data-i18n="layers.custom-layer-url-helptext-overpass"
>Overpass Query, ex: nwr[shop]['diet:vegan']['diet:vegan'!=no];</span
>
</p>
</div>
<button
type="button"
@ -238,6 +251,14 @@
>
Add overlay
</button>
<button
type="button"
id="custom_layers_add_overpass"
class="btn btn-success"
data-i18n="layers.add-overpass"
>
Add overpass query
</button>
<button
type="button"
id="custom_layers_remove"
@ -261,7 +282,7 @@
aria-labelledby="About window"
aria-hidden="true"
>
<div class="modal-dialog" role="document">
<div class="modal-dialog modal-fullscreen-md-down" role="document">
<div class="modal-content">
<div class="modal-header">
<h4 class="modal-title" data-i18n="about.title">About</h4>
@ -341,7 +362,7 @@
on the client.
</p>
</div>
<div class="modal-footer mt-4">
<div class="modal-footer">
<button
type="button"
class="btn btn-secondary"
@ -368,7 +389,7 @@
aria-labelledby="What's new window"
aria-hidden="true"
>
<div class="modal-dialog modal-lg" role="document">
<div class="modal-dialog modal-lg modal-fullscreen-md-down" role="document">
<div class="modal-content">
<div class="modal-header">
<h4 class="modal-title" data-i18n="whatsnew.title">What's new?</h4>
@ -379,7 +400,7 @@
<div class="modal-body">
<!-- will be filled automatically -->
</div>
<div class="modal-footer mt-4">
<div class="modal-footer">
<button type="button" class="btn btn-primary" data-i18n="modal.close" data-dismiss="modal">
Close
</button>
@ -388,83 +409,6 @@
</div>
</div>
<!-- Load nogos modal window -->
<div
class="modal fade"
id="loadNogos"
tabindex="-1"
role="dialog"
aria-labelledby="Load nogos window"
aria-hidden="true"
>
<div class="modal-dialog" role="document">
<div class="modal-content">
<div class="modal-header">
<h4 class="modal-title" data-i18n="loadNogos.title">Load no-go areas</h4>
<button type="button" class="close" data-dismiss="modal" aria-label="Close">
<span aria-hidden="true">&times;</span>
</button>
</div>
<div class="modal-body">
<p id="nogoError" class="invalid-feedback" style="display: none"></p>
<form>
<fieldset>
<legend data-i18n="loadNogos.source">Source</legend>
<p>
<input type="text" id="nogoJSON" hidden />
<label for="nogoURL" data-i18n="loadNogos.url">URL: </label>
<input type="text" name="nogoURL" id="nogoURL" /><br />
or<br />
<label for="nogoFile" data-i18n="loadNogos.file">File (.geojson): </label>
<input type="file" accept=".geojson" name="nogoFile" id="nogoFile" />
</p>
</fieldset>
<fieldset>
<legend data-i18n="loadNogos.defaultProperties">Default properties</legend>
<p>
<label for="nogoWeight" data-i18n="loadNogos.nogoWeight"
>No-go weight (-1 means impassable):
</label>
<input type="number" name="nogoWeight" id="nogoWeight" value="-1" min="-1" />
</p>
<p>
<label for="nogoRadius" data-i18n="loadNogos.nogoRadius"
>No-go radius for points (in meters):
</label>
<input type="number" name="nogoRadius" id="nogoRadius" value="20" min="0" />
</p>
<p>
<label for="nogoBuffer" data-i18n="loadNogos.nogoBuffer"
>Buffer no-go areas (in meters):
</label>
<input type="number" name="nogoBuffer" id="nogoBuffer" value="0" min="0" />
</p>
</fieldset>
<div class="modal-footer">
<button
type="button"
class="btn btn-secondary"
data-i18n="[value]modal.close"
data-dismiss="modal"
>
Close
</button>
<button
type="button"
class="btn btn-primary"
data-i18n="[value]loadNogos.load"
id="submitNogos"
>
Load
</button>
</div>
</form>
</div>
</div>
</div>
</div>
<!-- Export modal window -->
<div
class="modal fade"
@ -474,7 +418,7 @@
aria-labelledby="Export route window"
aria-hidden="true"
>
<div class="modal-dialog" role="document">
<div class="modal-dialog modal-fullscreen-md-down" role="document">
<div class="modal-content">
<div class="modal-header">
<h4 class="modal-title" data-i18n="export.title">Export route</h4>
@ -483,7 +427,7 @@
</button>
</div>
<div class="modal-body">
<form name="export">
<form name="export" id="exportForm">
<div class="form-group row">
<label class="col-form-label col-sm-2" data-i18n="export.trackname">Name</label>
<div class="col-sm-10">
@ -565,26 +509,22 @@
</div>
</div>
</fieldset>
<div class="modal-footer">
<button
type="button"
class="btn btn-secondary"
data-i18n="modal.close"
data-dismiss="modal"
>
Close
</button>
<button
type="submit"
class="btn btn-primary"
data-i18n="export.title"
id="submitExport"
>
Export route
</button>
</div>
</form>
</div>
<div class="modal-footer">
<button type="button" class="btn btn-secondary" data-i18n="modal.close" data-dismiss="modal">
Close
</button>
<button
type="submit"
class="btn btn-primary"
data-i18n="export.title"
form="exportForm"
id="submitExport"
>
Export route
</button>
</div>
</div>
</div>
</div>
@ -592,13 +532,13 @@
<!-- Track to Route modal window -->
<div
class="modal fade"
id="loadedittrackdlg"
id="loadedittrack"
tabindex="-1"
role="dialog"
aria-labelledby="Load Track as route"
aria-hidden="true"
>
<div class="modal-dialog" role="document">
<div class="modal-dialog modal-lg modal-fullscreen-md-down" role="document">
<div class="modal-content">
<div class="modal-header">
<h4 class="modal-title" data-i18n="trackasroute.title">Load Track as Route</h4>
@ -609,65 +549,81 @@
</div>
<div class="modal-body">
<form name="loadedittrackForm" id="loadedittrackForm">
<div class="form-group row mt-4">
<label class="col-sm-3" for="loadedittrackFile" data-i18n="trackasroute.file"
<div class="form-group row">
<label
class="col-form-label col-sm-3"
for="loadedittrackFile"
data-i18n="trackasroute.file"
>Trackfile</label
>
<div class="custom-control custom-file col-sm-8">
<input
type="file"
accept=".gpx,.kml,.geojson,*.*"
name="loadedittrackFile"
id="loadedittrackFile"
class="custom-file-input"
/>
<label
for="loadedittrackFile"
class="custom-file-label"
style="white-space: nowrap; overflow: hidden; text-overflow: ellipsis"
>
</label
><br />
<div class="col-sm-9">
<div class="custom-control custom-file">
<input
type="file"
accept=".gpx,.kml,.geojson,*.*"
name="loadedittrackFile"
id="loadedittrackFile"
class="custom-file-input"
/>
<label
for="loadedittrackFile"
class="custom-file-label"
data-i18n="[data-browse]trackasroute.browse"
style="white-space: nowrap; overflow: hidden; text-overflow: ellipsis"
>
</label
><br />
</div>
</div>
</div>
<div class="form-group row mt-4">
<label class="col-sm-3" for="cb_showtracklayer" data-i18n="trackasroute.tracklayer"
<div class="form-group row">
<label
class="col-form-label col-sm-3"
for="cb_showtracklayer"
data-i18n="trackasroute.tracklayer"
>Track Layer</label
>
<div class="custom-control custom-switch">
<input
type="checkbox"
class="custom-control-input"
id="cb_showtracklayer"
checked="checked"
/>
<label
class="custom-control-label"
for="cb_showtracklayer"
data-i18n="trackasroute.explaintracklayer"
>(show Track as separate Layer)</label
>
<div class="col-sm-9">
<div class="custom-control custom-switch">
<input
type="checkbox"
class="custom-control-input"
id="cb_showtracklayer"
checked="checked"
/>
<label
class="custom-control-label"
for="cb_showtracklayer"
data-i18n="trackasroute.explaintracklayer"
>(show Track as separate Layer)</label
>
</div>
</div>
</div>
<div class="form-group row mt-4">
<label class="col-sm-3" for="cb_showpois" data-i18n="trackasroute.showpois"
<div class="form-group row">
<label
class="col-form-label col-sm-3"
for="cb_showpois"
data-i18n="trackasroute.showpois"
>POI's</label
>
<div class="custom-control custom-switch">
<input
type="checkbox"
class="custom-control-input"
id="cb_showpois"
checked="checked"
/>
<label
class="custom-control-label"
for="cb_showpois"
data-i18n="trackasroute.explainpoi"
>(show waypoints as POI's)</label
>
<div class="col-sm-9">
<div class="custom-control custom-switch">
<input
type="checkbox"
class="custom-control-input"
id="cb_showpois"
checked="checked"
/>
<label
class="custom-control-label"
for="cb_showpois"
data-i18n="trackasroute.explainpoi"
>(show waypoints as POI's)</label
>
</div>
</div>
</div>
@ -693,17 +649,19 @@
for="simplify_tolerance"
class="col-sm-3"
data-i18n="trackasroute.fuzziness"
>fuzziness</label
>Fuzziness</label
>
<input
type="range"
class="custom-range col-sm-8"
id="simplify_tolerance"
min="-500"
max="500"
step="any"
value="0"
/>
<div class="col-sm-9">
<input
type="range"
class="custom-range"
id="simplify_tolerance"
min="-500"
max="500"
step="any"
value="0"
/>
</div>
</div>
</div>
</div>
@ -715,26 +673,142 @@
>
Please wait!
</div>
<div class="modal-footer mt-4">
<button
type="button"
class="btn btn-secondary"
data-i18n="modal.close"
data-dismiss="modal"
>
Close
</button>
<button
type="button"
class="btn btn-primary"
data-i18n="trackasroute.title"
id="submitLoadEditTrack"
>
Import Track
</button>
</div>
</form>
</div>
<div class="modal-footer">
<button type="button" class="btn btn-secondary" data-i18n="modal.close" data-dismiss="modal">
Close
</button>
<button
type="submit"
class="btn btn-primary"
form="loadedittrackForm"
data-i18n="trackasroute.title"
id="submitLoadEditTrack"
>
Import Track
</button>
</div>
</div>
</div>
</div>
<!-- Load nogos modal window -->
<div
class="modal fade"
id="loadNogos"
tabindex="-1"
role="dialog"
aria-labelledby="Load nogos window"
aria-hidden="true"
>
<div class="modal-dialog modal-lg modal-fullscreen-md-down" role="document">
<div class="modal-content">
<div class="modal-header">
<h4 class="modal-title" data-i18n="loadNogos.title">Load no-go areas</h4>
<button type="button" class="close" data-dismiss="modal" aria-label="Close">
<span aria-hidden="true">&times;</span>
</button>
</div>
<div class="modal-body">
<p id="nogoError" class="invalid-feedback" style="display: none"></p>
<form name="loadNogosForm" id="loadNogosForm">
<fieldset>
<legend data-i18n="loadNogos.source">Source</legend>
<div>
<input type="text" id="nogoJSON" hidden />
<div class="form-group row">
<label for="nogoURL" class="col-form-label col-sm-3" data-i18n="loadNogos.url"
>URL</label
>
<div class="col-sm-9">
<input type="text" name="nogoURL" id="nogoURL" />
</div>
</div>
<p data-i18n="modal.or">or</p>
<div class="form-group row">
<label class="col-form-label col-sm-3" for="nogoFile" data-i18n="loadNogos.file"
>File (.geojson)</label
>
<div class="col-sm-9">
<div class="custom-control custom-file">
<input
type="file"
accept=".geojson"
name="nogoFile"
id="nogoFile"
class="custom-file-input"
/>
<label
for="nogoFile"
class="custom-file-label"
data-i18n="[data-browse]trackasroute.browse"
style="
white-space: nowrap;
overflow: hidden;
text-overflow: ellipsis;
"
>
</label
><br />
</div>
</div>
</div>
</div>
</fieldset>
<fieldset>
<legend data-i18n="loadNogos.defaultProperties">Default properties</legend>
<div class="form-group row">
<label
class="col-form-label col-sm-8"
for="nogoWeight"
data-i18n="loadNogos.nogoWeight"
>No-go weight (-1 means impassable):
</label>
<div class="col-sm-3">
<input type="number" name="nogoWeight" id="nogoWeight" value="-1" min="-1" />
</div>
</div>
<div class="form-group row">
<label
class="col-form-label col-sm-8"
for="nogoRadius"
data-i18n="loadNogos.nogoRadius"
>No-go radius for points (in meters):
</label>
<div class="col-sm-3">
<input type="number" name="nogoRadius" id="nogoRadius" value="20" min="0" />
</div>
</div>
<div class="form-group row">
<label
class="col-form-label col-sm-8"
for="nogoBuffer"
data-i18n="loadNogos.nogoBuffer"
>Buffer no-go areas (in meters):
</label>
<div class="col-sm-3">
<input type="number" name="nogoBuffer" id="nogoBuffer" value="0" min="0" />
</div>
</div>
</fieldset>
</form>
</div>
<div class="modal-footer">
<button type="button" class="btn btn-secondary" data-i18n="modal.close" data-dismiss="modal">
Close
</button>
<button
type="submit"
class="btn btn-primary"
form="loadNogosForm"
data-i18n="loadNogos.load"
id="submitNogos"
>
Load
</button>
</div>
</div>
</div>
</div>
@ -763,7 +837,7 @@
class="fa"
width="1em"
height="1em"
viewBox="0 0 24 24"
viewbox="0 0 24 24"
fill="none"
stroke="currentColor"
stroke-width="2.2"
@ -837,7 +911,11 @@
<div class="leaflet-sidebar-flex-row flexgrow">
<div id="map" class="leaflet-sidebar-map">
<div id="message"></div>
<div id="notification_jar">
<div id="message"></div>
<div id="whats_new_message"></div>
<div id="overpass_loading_indicator"></div>
</div>
<div id="preview" hidden data-i18n="map.preview">Preview</div>
</div>
@ -846,7 +924,8 @@
<div class="leaflet-sidebar-pane" id="tab_layers_control">
<h1 class="leaflet-sidebar-header">
<span class="leaflet-sidebar-close"><i class="fa fa-caret-right"></i></span
><span class="leaflet-sidebar-expand"><i class="fa fa-expand"></i></span
><span class="d-none d-md-block leaflet-sidebar-expand"
><i class="fa fa-expand"></i></span
><span data-i18n="sidebar.layers.title">Layers</span>
</h1>
<div id="layers-control-wrapper"></div>
@ -910,7 +989,8 @@
<div class="leaflet-sidebar-pane" id="tab_profile">
<h1 class="leaflet-sidebar-header">
<span class="leaflet-sidebar-close"><i class="fa fa-caret-right"></i></span
><span class="leaflet-sidebar-expand"><i class="fa fa-expand"></i></span
><span class="d-none d-md-block leaflet-sidebar-expand"
><i class="fa fa-expand"></i></span
><span data-i18n="sidebar.customize-profile.title">Customize profile</span>
</h1>
<form class="flexcolumn flexgrow">
@ -951,7 +1031,7 @@
aria-labelledby="params-tab"
>
<div id="profile_params"></div>
<div class="form-group" id="profile_buttons">
<div class="form-group pt-1">
<button id="save" type="button" class="btn btn-primary btn-sm">
<span class="fa fa-cloud-upload"></span>
<span data-i18n="sidebar.profile.apply">Apply</span>
@ -973,7 +1053,7 @@
placeholder="Write your custom profile here."
></textarea>
<div id="profile_message"></div>
<div class="form-group" id="profile_buttons">
<div class="form-group pt-1">
<button id="upload" type="button" class="btn btn-primary btn-sm">
<span class="fa fa-cloud-upload"></span>
<span data-i18n="sidebar.profile.apply">Apply</span>
@ -998,7 +1078,9 @@
<div class="leaflet-sidebar-pane" id="tab_data">
<h1 class="leaflet-sidebar-header">
<span class="leaflet-sidebar-close"><i class="fa fa-caret-right"></i></span>
<span class="leaflet-sidebar-expand"><i class="fa fa-expand"></i></span>
<span class="d-none d-md-block leaflet-sidebar-expand"
><i class="fa fa-expand"></i
></span>
<span
id="data-sync-map"
class="sync-map active"
@ -1015,7 +1097,9 @@
<h1 class="leaflet-sidebar-header">
<span data-i18n="sidebar.itinerary.title">Itinerary</span
><span class="leaflet-sidebar-close"><i class="fa fa-caret-right"></i></span
><span class="leaflet-sidebar-expand"><i class="fa fa-expand"></i></span>
><span class="d-none d-md-block leaflet-sidebar-expand"
><i class="fa fa-expand"></i
></span>
</h1>
<div id="itinerary" class="flexcolumn flexgrow"></div>
</div>
@ -1143,7 +1227,7 @@
<script>
// global package prefix for BRouter web application
BR = {};
BR.version = '0.15.1';
BR.version = '0.16.0';
console.log(
'\r\n###\r\n### BRouter-Web\r\n###\r\n### Please note that the routing API used here is not public!\r\n###\r\n'

View file

@ -1,4 +1,5 @@
BR.LayersConfig = L.Class.extend({
overpassFrontend: new OverpassFrontend(BR.conf.overpassBaseUrl || '//overpass-api.de/api/interpreter'),
defaultBaseLayers: BR.confLayers.defaultBaseLayers,
defaultOverlays: BR.confLayers.defaultOverlays,
legacyNameToIdMap: BR.confLayers.legacyNameToIdMap,
@ -7,6 +8,8 @@ BR.LayersConfig = L.Class.extend({
initialize: function (map) {
this._map = map;
this._overpassLoadingIndicator = new BR.Message('overpass_loading_indicator', { alert: false });
this._overpassActiveRequestCount = 0;
this._addLeafletProvidersLayers();
this._customizeLayers();
@ -169,6 +172,70 @@ BR.LayersConfig = L.Class.extend({
return result;
},
_showOverpassLoadingIndicator: function () {
this._overpassActiveRequestCount++;
this._overpassLoadingIndicator.showLoading(i18next.t('layers.overpass-loading-indicator'));
},
_hideOverpassLoadingIndicator: function () {
if (--this._overpassActiveRequestCount === 0) {
this._overpassLoadingIndicator.hide();
}
},
getOverpassIconUrl: function (icon) {
const iconPrefix = /^(maki|temaki|fas)-/;
let iconUrl = null;
if (icon && iconPrefix.test(icon)) {
const iconName = icon.replace(iconPrefix, '');
const postfix = icon.startsWith('maki-') ? '-11' : '';
iconUrl = `dist/images/${iconName}${postfix}.svg`;
}
return iconUrl;
},
createOverpassLayer: function (query, icon) {
let markerSign = '<i class="fa fa-search icon-white" style="width: 25px;"></i>';
const iconUrl = this.getOverpassIconUrl(icon);
if (iconUrl) {
markerSign = `<img class="icon-invert" src="${iconUrl}" width="11" />`;
}
return Object.assign(
new OverpassLayer({
overpassFrontend: this.overpassFrontend,
query: query,
minZoom: 12,
feature: {
title: '{{ tags.name }}',
body:
'<table class="overpass-tags">{% for k, v in tags %}{% if k[:5] != "addr:" %}<tr><th>{{ k }}</th><td>{% if k matches "/email/" %}<a href="mailto:{{ v }}">{{ v }}</a>{% elseif v matches "/^http/" %}<a href="{{ v }}">{{ v }}</a>{% elseif v matches "/^www/" %}<a href="http://{{ v }}">{{ v }}</a>{% else %}{{ v }}{% endif %}</td></tr>{% endif %}{% endfor %}</table>',
markerSymbol:
'<svg width="25px" height="41px" anchorX="12" anchorY="41" viewBox="0 0 32 52" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"><path d="M16,1 C7.7146,1 1,7.65636364 1,15.8648485 C1,24.0760606 16,51 16,51 C16,51 31,24.0760606 31,15.8648485 C31,7.65636364 24.2815,1 16,1 L16,1 Z" fill="#436978"></path></svg>',
markerSign,
style: function (overpassObject) {
return {
// nodeFeature: 'Marker' isn't currently working well, hence use transparent circle color for nodes
color:
overpassObject.type === 'node'
? '#00000000'
: this.defaultBaseLayers?.[0] === 'cyclosm'
? 'darkorange'
: '#3388ff',
};
}.bind(this),
},
}),
{
onLoadStart: this._showOverpassLoadingIndicator.bind(this),
onLoadEnd: this._hideOverpassLoadingIndicator.bind(this),
}
);
},
createLayer: function (layerData) {
var props = layerData.properties;
var url = props.url;
@ -251,6 +318,8 @@ BR.LayersConfig = L.Class.extend({
if (props.subdomains) {
layer.subdomains = props.subdomains;
}
} else if (props.dataSource === 'OverpassAPI') {
layer = this.createOverpassLayer(props.query, props.icon);
} else {
// JOSM
var josmUrl = url;

View file

@ -56,6 +56,10 @@ BR.Map = {
$('#credits').on('show.bs.modal', function (event) {
BR.Map._renderLayerCredits(layersControl._layers);
const overpassUrl = new URL(BR.conf.overpassBaseUrl || 'https://overpass-api.de').origin;
for (const link of document.getElementsByClassName('overpass-url')) {
link.href = overpassUrl;
}
});
new L.Control.PermalinkAttribution().addTo(map);

View file

@ -1,18 +1,30 @@
BR.WhatsNew = {
newOnly: undefined,
init: function () {
var self = this;
self.prepare(self.hasNewVersions());
self.dismissableMessage = new BR.Message('whats_new_message', {
onClosed: function () {
document.getElementsByClassName('version')[0].classList.remove('version-new');
if (BR.Util.localStorageAvailable()) {
localStorage.setItem('changelogVersion', self.getLatestVersion());
}
},
});
$('#whatsnew').on('shown.bs.modal', function () {
self.dismissableMessage.hide();
});
$('#whatsnew').on('hidden.bs.modal', function () {
localStorage.setItem('changelogVersion', self.getLatestVersion());
// next time popup is open, by default we will see everything
self.prepare(false);
});
$('#whatsnew').on('shown.bs.modal', function () {
BR.message.hide();
document.getElementsByClassName('version')[0].classList.remove('version-new');
});
if (!self.getCurrentVersion() && BR.Util.localStorageAvailable()) {
localStorage.setItem('changelogVersion', self.getLatestVersion());
}
self.prepare(self.hasNewVersions());
if (self.hasNewVersions()) {
BR.message.showInfo(i18next.t('whatsnew.new-version'));
self.dismissableMessage.showInfo(i18next.t('whatsnew.new-version'));
document.getElementsByClassName('version')[0].classList.add('version-new');
}
},
@ -21,21 +33,28 @@ BR.WhatsNew = {
return BR.changelog.match('<h2 id="(.*)">')[1];
},
getCurrentVersion: function () {
if (!BR.Util.localStorageAvailable()) return null;
return localStorage.getItem('changelogVersion');
},
hasNewVersions: function () {
if (!BR.Util.localStorageAvailable()) return false;
var currentVersion = localStorage.getItem('changelogVersion');
return !currentVersion || currentVersion < this.getLatestVersion();
return this.getCurrentVersion() && this.getCurrentVersion() !== this.getLatestVersion();
},
prepare: function (newOnly) {
var currentVersion = localStorage.getItem('changelogVersion');
if (newOnly === this.newOnly) {
// do not rebuild modal content unnecessarily
return;
}
this.newOnly = newOnly;
var container = document.querySelector('#whatsnew .modal-body');
var cl = BR.changelog;
if (newOnly && currentVersion) {
var head = '<h2 id="' + currentVersion + '">';
cl = cl.substring(0, cl.indexOf(head));
if (newOnly && this.getCurrentVersion()) {
var head = '<h2 id="' + this.getCurrentVersion() + '">';
var idx = cl.indexOf(head);
if (idx >= 0) cl = cl.substring(0, idx);
}
container.innerHTML = cl;
},

View file

@ -148,6 +148,10 @@ BR.Export = L.Class.extend({
}
},
_selectTrackname: function () {
trackname.setSelectionRange(0, trackname.value.lastIndexOf(BR.Browser.download ? ' (' : ' - '));
},
_generateTrackname: function () {
var trackname = this.trackname;
this._getCityAtPosition(
@ -180,6 +184,8 @@ BR.Export = L.Class.extend({
trackname.value = trackname.value.replace(/[>)]/g, '').replace(/ \(/g, ' - ');
this._validationMessage();
}
this._selectTrackname();
}, this)
);
}, this)

View file

@ -5,7 +5,7 @@ BR.Layers = L.Class.extend({
if (BR.Util.localStorageAvailable()) {
var layers = JSON.parse(localStorage.getItem('map/customLayers'));
for (a in layers) {
this._addLayer(a, layers[a].layer, layers[a].isOverlay);
this._addLayer(a, layers[a].layer, layers[a].isOverlay, layers[a].dataSource);
}
}
},
@ -13,14 +13,22 @@ BR.Layers = L.Class.extend({
_loadTable: function () {
var layersData = [];
for (layer in this._customLayers) {
var isOverlay = this._customLayers[layer].isOverlay;
layersData.push([
layer,
this._customLayers[layer].layer._url,
isOverlay
? i18next.t('sidebar.layers.table.type_overlay')
: i18next.t('sidebar.layers.table.type_layer'),
]);
if (this._customLayers[layer].dataSource === 'OverpassAPI') {
layersData.push([
layer,
this._customLayers[layer].layer.options.query,
i18next.t('sidebar.layers.table.type_overpass_query'),
]);
} else {
var isOverlay = this._customLayers[layer].isOverlay;
layersData.push([
layer,
this._customLayers[layer].layer._url,
isOverlay
? i18next.t('sidebar.layers.table.type_overlay')
: i18next.t('sidebar.layers.table.type_layer'),
]);
}
}
if (this._layersTable != null) {
this._layersTable.destroy();
@ -51,6 +59,7 @@ BR.Layers = L.Class.extend({
L.DomUtil.get('custom_layers_add_base').onclick = L.bind(this._addBaseLayer, this);
L.DomUtil.get('custom_layers_add_overlay').onclick = L.bind(this._addOverlay, this);
L.DomUtil.get('custom_layers_add_overpass').onclick = L.bind(this._addOverpassQuery, this);
L.DomUtil.get('custom_layers_remove').onclick = L.bind(this._remove, this);
this._loadLayers();
@ -83,10 +92,10 @@ BR.Layers = L.Class.extend({
}
},
_addFromInput: function (isOverlay) {
_addFromInput: function (isOverlay, dataSource) {
var layer_name = L.DomUtil.get('layer_name').value;
var layer_url = L.DomUtil.get('layer_url').value;
if (layer_name.length > 0 && layer_url.length > 0) this._addLayer(layer_name, layer_url, isOverlay);
if (layer_name.length > 0 && layer_url.length > 0) this._addLayer(layer_name, layer_url, isOverlay, dataSource);
},
_addBaseLayer: function (evt) {
@ -95,18 +104,28 @@ BR.Layers = L.Class.extend({
_addOverlay: function (evt) {
this._addFromInput(true);
},
_addOverpassQuery: function (evt) {
this._addFromInput(true, 'OverpassAPI');
},
_addLayer: function (layerName, layerUrl, isOverlay) {
_addLayer: function (layerName, layerUrl, isOverlay, dataSource) {
if (layerName in this._layers) return;
if (layerName in this._customLayers) return;
try {
var layer = L.tileLayer(layerUrl);
var layer;
if (dataSource === 'OverpassAPI') {
layer = this._layersControl.layersConfig.createOverpassLayer(layerUrl);
} else {
layer = L.tileLayer(layerUrl);
}
this._customLayers[layerName] = {
layer: layer,
isOverlay: isOverlay,
dataSource: dataSource,
};
if (isOverlay) {
@ -128,6 +147,18 @@ BR.Layers = L.Class.extend({
localStorage.setItem(
'map/customLayers',
JSON.stringify(this._customLayers, function (k, v) {
if (v === undefined) {
return undefined;
}
if (v.dataSource === 'OverpassAPI') {
return {
dataSource: 'OverpassAPI',
isOverlay: true,
layer: v.layer.options.query,
};
}
// dont write Leaflet.Layer in localStorage; simply keep the URL
return v._url || v;
})

View file

@ -170,7 +170,7 @@ BR.LayersTab = BR.ControlLayers.extend({
core: {
multiple: false,
themes: {
icons: false,
icons: true,
dots: false,
},
data: treeData,
@ -188,6 +188,7 @@ BR.LayersTab = BR.ControlLayers.extend({
function createRootNode(name) {
var rootNode = {
text: i18next.t('sidebar.layers.category.' + name, name),
icon: false,
state: {
disabled: true,
},
@ -218,6 +219,7 @@ BR.LayersTab = BR.ControlLayers.extend({
childNode = {
id: id,
text: getText(props, parent),
icon: self.layersConfig.getOverpassIconUrl(props.icon) || false,
state: {
checked: self.layersConfig.isDefaultLayer(id, props.overlay),
},

View file

@ -3,6 +3,7 @@ BR.Message = L.Class.extend({
// true to manually attach click event to close button,
// Bootstrap data-api's auto-initialization doesn't work in Controls because of stopPropagation
alert: false,
onClosed: null,
},
initialize: function (id, options) {
@ -18,12 +19,20 @@ BR.Message = L.Class.extend({
case 'error':
iconClass = 'fa-times-circle';
alertClass = 'alert-danger';
break;
case 'warning':
iconClass = 'fa-exclamation-triangle';
alertClass = 'alert-warning';
break;
case 'loading':
iconClass = 'fa-spinner fa-pulse';
alertClass = 'alert-secondary';
break;
default:
case 'info':
iconClass = 'fa-info-circle';
alertClass = 'alert-info';
break;
}
L.DomEvent.disableClickPropagation(ele);
@ -41,6 +50,10 @@ BR.Message = L.Class.extend({
msg +
'</div>';
if (this.options.onClosed) {
$('#' + this.id + ' .alert').on('closed.bs.alert', this.options.onClosed);
}
if (this.options.alert) {
$('#' + this.id + ' .alert').alert();
}
@ -74,6 +87,10 @@ BR.Message = L.Class.extend({
showInfo: function (msg) {
this._show(msg, 'info');
},
showLoading: function (msg) {
this._show(msg, 'loading');
},
});
// static instance as global control

View file

@ -153,6 +153,9 @@
},
],
value: ['route'],
onShown: function () {
$('button.bootbox-accept', $(this)).focus();
},
callback: function (result) {
if (result !== null) {
if (result.indexOf('route') !== -1) {
@ -454,6 +457,10 @@
);
BR.WhatsNew.init();
$('.modal').on('shown.bs.modal', function (e) {
$('input:visible:enabled:first', e.target).focus();
});
}
i18next.on('languageChanged', function (detectedLanguage) {

View file

@ -11,7 +11,7 @@ BR.CircleGoArea = L.Control.extend({
options: {
countriesUrl: BR.conf.countriesUrl || 'dist/boundaries/countries.topo.json',
statesUrl: BR.conf.statesUrl || 'dist/boundaries/germany-states.topo.json',
overpassBaseUrl: BR.conf.overpassBaseUrl || 'https://overpass-api.de/api/interpreter?data=',
overpassDataUrl: (BR.conf.overpassBaseUrl || 'https://overpass-api.de/api/interpreter') + '?data=',
shortcut: {
draw: {
enable: 73, // char code for 'i'
@ -137,7 +137,7 @@ BR.CircleGoArea = L.Control.extend({
query += '(area.a[admin_level="' + adminLevelFallback + '"];)->.p; relation(pivot.p); out geom;';
}
var url = this.options.overpassBaseUrl + encodeURIComponent(query);
var url = this.options.overpassDataUrl + encodeURIComponent(query);
this.marker.setIcon(this.iconSpinner);
BR.Util.getJson(
@ -281,7 +281,7 @@ BR.CircleGoArea = L.Control.extend({
this._applyStateRules(center);
}
} else if (name === 'Metropolitan France') {
this.radius = 20000;
this.radius = 10000;
this._setNogoCircle(center);
} else {
console.error('unhandled country: ' + name);

View file

@ -5,6 +5,7 @@ BR.NogoAreas = L.Control.extend({
enable: 78, // char code for 'n'
disable: 27, // char code for 'ESC'
},
import: 78, // char code for 'n'; used in conjunction with 'shift'
},
},
@ -97,6 +98,8 @@ BR.NogoAreas = L.Control.extend({
L.DomEvent.addListener(document, 'keydown', this._keydownListener, this);
L.DomUtil.get('nogoFile').onchange = L.bind(this.onFileChanged, this);
this.editTools.on(
'editable:drawing:end',
function (e) {
@ -147,6 +150,13 @@ BR.NogoAreas = L.Control.extend({
if (!BR.Util.keyboardShortcutsAllowed(e)) {
return;
}
if (true === e.shiftKey && e.keyCode === this.options.shortcut.import) {
$('#loadNogos').modal('show');
return;
}
if (e.keyCode === this.options.shortcut.draw.disable && this.button.state() === BR.NogoAreas.STATE_CANCEL) {
this.stopDrawing(this.button);
} else if (
@ -162,6 +172,11 @@ BR.NogoAreas = L.Control.extend({
$('#nogoError').css('display', message ? 'block' : 'none');
},
onFileChanged: function (e) {
if (!e.target.files[0]) return;
$(e.target).next('label').text(e.target.files[0].name);
},
uploadNogos: function () {
var self = this;

View file

@ -15,6 +15,9 @@ BR.routeLoader = function (map, layersControl, routing, pois) {
simplifyTolerance: -1,
isTestMode: false,
simplifyLastKnownGood: 0.001,
shortcut: {
open: 79, // char code for 'O'; used in conjunction with 'shift'
},
},
setDialogDraggable: function (jqDlgHeader) {
@ -84,12 +87,14 @@ BR.routeLoader = function (map, layersControl, routing, pois) {
(this._bounds = undefined), (this._trackPoints = []);
this._currentGeoJSON = {};
this._options = {
ext: 'gpx',
showTrackLayer: true,
showPointAsPoi: true,
simplifyTolerance: -1,
isTestMode: false,
simplifyLastKnownGood: 0.001,
shortcut: {
open: 79, // char code for 'O'; used in conjunction with 'shift'
},
};
},
@ -156,13 +161,13 @@ BR.routeLoader = function (map, layersControl, routing, pois) {
if (typeof isBusy === undefined) {
isBusy = false;
}
if (isBusy === true) $('#loadedittrackdlg #msg_busy').removeClass('invisible');
else $('#loadedittrackdlg #msg_busy').addClass('invisible');
if (isBusy === true) $('#loadedittrack #msg_busy').removeClass('invisible');
else $('#loadedittrack #msg_busy').addClass('invisible');
},
onManualCollapse: function (e) {
//workaround for starting with closed collapse
if ($('#loadedittrackdlg').is(':hidden')) return;
if ($('#loadedittrack').is(':hidden')) return;
this._options.isTestMode = $(e.target).hasClass('show');
if (this._options.isTestMode) {
@ -172,13 +177,13 @@ BR.routeLoader = function (map, layersControl, routing, pois) {
},
onAdd: function (map) {
$('#loadedittrackdlg').on(
$('#loadedittrack').on(
'hidden.bs.modal',
function (e) {
this.cleanup();
}.bind(this)
);
$('#loadedittrackdlg').on(
$('#loadedittrack').on(
'show.bs.modal',
function (e) {
$('#manual_collapse').collapse('hide');
@ -186,7 +191,8 @@ BR.routeLoader = function (map, layersControl, routing, pois) {
}.bind(this)
);
L.DomUtil.get('submitLoadEditTrack').onclick = L.bind(function () {
L.DomUtil.get('submitLoadEditTrack').onclick = L.bind(function (e) {
e.preventDefault(); // prevent page reload on form submission
this._closeCanceled = false;
this.onBusyChanged(true);
if (this._testLayer.getLayers().length > 0) {
@ -195,7 +201,7 @@ BR.routeLoader = function (map, layersControl, routing, pois) {
function () {
this.addRoutingPoints();
this.onBusyChanged(false);
$('#loadedittrackdlg').modal('hide');
$('#loadedittrack').modal('hide');
}.bind(this),
0
);
@ -203,7 +209,7 @@ BR.routeLoader = function (map, layersControl, routing, pois) {
setTimeout(
function () {
this.convertTrackLocal();
$('#loadedittrackdlg').modal('hide');
$('#loadedittrack').modal('hide');
}.bind(this),
0
);
@ -214,7 +220,7 @@ BR.routeLoader = function (map, layersControl, routing, pois) {
L.DomUtil.get('loadedittrackFile').onchange = L.bind(this.onFileChanged, this);
this.onFileChanged({ target: L.DomUtil.get('loadedittrackFile') });
this.setDialogDraggable($('#loadedittrackdlg .modal-header'));
this.setDialogDraggable($('#loadedittrack .modal-header'));
$('#manual_collapse').collapse('hide');
$('#manual_collapse').on(
@ -224,6 +230,8 @@ BR.routeLoader = function (map, layersControl, routing, pois) {
}.bind(this)
);
L.DomEvent.addListener(document, 'keydown', this.keydownListener, this);
// dummy, no own representation, delegating to EasyButton
var dummy = L.DomUtil.create('div');
dummy.hidden = true;
@ -382,6 +390,16 @@ BR.routeLoader = function (map, layersControl, routing, pois) {
this.onBusyChanged(false);
},
keydownListener: function (e) {
if (
BR.Util.keyboardShortcutsAllowed(e) &&
e.keyCode === this._options.shortcut.open &&
true === e.shiftKey
) {
$('#navbarLoadEditTracks').click();
}
},
});
RouteLoader.include(L.Evented.prototype);

View file

@ -1,29 +1,29 @@
BR.Search = L.Control.Geocoder.extend({
options: {
geocoder: new L.Control.Geocoder.LatLng({
next: new L.Control.Geocoder.Nominatim({
serviceUrl: 'https://nominatim.openstreetmap.org/',
}),
sizeInMeters: 800,
}),
position: 'topleft',
shortcut: {
search: 70, // char code for 'f'
},
},
initialize: function (options) {
L.Control.Geocoder.prototype.initialize.call(this, options);
L.setOptions(this, {
// i18next.t will only return 'undefined' if it is called in a static context
// (e.g. when added directly to "options:" above), so we have to call it here
placeholder: i18next.t('map.geocoder-placeholder'),
});
BR.Search = class extends L.Control.Geocoder {
constructor(options) {
super(
Object.assign(
{
geocoder: new L.Control.Geocoder.LatLng({
next: new L.Control.Geocoder.Nominatim({
serviceUrl: 'https://nominatim.openstreetmap.org/',
}),
sizeInMeters: 800,
}),
position: 'topleft',
expand: 'click',
shortcut: {
search: 70, // char code for 'f'
},
placeholder: i18next.t('map.geocoder-placeholder'),
},
options
)
);
L.DomEvent.addListener(document, 'keydown', this._keydownListener, this);
},
}
markGeocode: function (result) {
markGeocode(result) {
this._map.fitBounds(result.geocode.bbox, {
maxZoom: 17,
});
@ -37,18 +37,18 @@ BR.Search = L.Control.Geocoder.extend({
}).addTo(this._map);
return this;
},
}
clear: function () {
clear() {
if (this._geocodeMarker) {
this._map.removeLayer(this._geocodeMarker);
}
},
}
_keydownListener: function (e) {
_keydownListener(e) {
if (BR.Util.keyboardShortcutsAllowed(e) && e.keyCode === this.options.shortcut.search) {
$('#map .leaflet-control-geocoder')[0].dispatchEvent(new MouseEvent('mousedown'));
$('#map .leaflet-control-geocoder')[0].dispatchEvent(new MouseEvent('click'));
e.preventDefault();
}
},
});
}
};

View file

@ -13,7 +13,7 @@ BR.tracksLoader = function (map, layersControl, routing, pois) {
layerOptions: BR.Track.getGeoJsonOptions(layersControl),
addToMap: false,
// File size limit in kb (default: 1024) ?
fileSizeLimit: 1024,
fileSizeLimit: BR.conf.trackSizeLimit || 1024 * 10,
shortcut: {
open: 79, // char code for 'o'
},
@ -61,12 +61,12 @@ BR.tracksLoader = function (map, layersControl, routing, pois) {
},
_keydownListener: function (e) {
if (BR.Util.keyboardShortcutsAllowed(e) && e.keyCode === this.options.shortcut.open) {
if (e.shiftKey) {
$('#loadNogos').modal('show');
} else {
$('#navbarLoadTracks')[0].click();
}
if (
BR.Util.keyboardShortcutsAllowed(e) &&
e.keyCode === this.options.shortcut.open &&
false === e.shiftKey
) {
$('#navbarLoadTracks')[0].click();
}
},
});

View file

@ -129,6 +129,11 @@
L.bind(function (obj, index, array) {
if (obj) {
layersControl.activateLayer(obj);
if (obj.layer instanceof OverpassLayer) {
// hack to select overlay (mark checked) in the layers control
// (OverpassLayer._layerAdd does not fire 'add' event)
layersControl._update();
}
if (obj && !obj.overlay) {
added = true;
}

View file

@ -83,5 +83,88 @@ BR.confLayers.tree = {
]
}
]
},
'overpass': {
'amenity': {
'financial': [
'atm',
'bank',
],
'others': [
'bench',
'kneipp_water_cure',
'public_bath',
'shelter',
'shower',
'telephone',
'toilets',
'water_point',
],
'sustenance': [
'bar',
'bbq',
'biergarten',
'cafe',
'drinking_water',
'fast_food',
'food_court',
'ice_cream',
'pub',
'restaurant',
],
'transportation': [
'bicycle_parking',
'bicycle_rental',
'bicycle_repair_station',
'boat_rental',
'boat_sharing',
'bus_station',
'car_rental',
'car_sharing',
'car_wash',
'charging_station',
'ferry_terminal',
'fuel',
'grit_bin',
'motorcycle_parking',
'parking_entrance',
'parking',
'parking_space',
'taxi',
'vehicle_inspection',
]
},
'shop': {
'food': [
'bakery',
'beverages',
'butcher',
'cheese',
'coffee',
'convenience',
'greengrocer',
'health_food',
'ice_cream_shop',
'organic',
]
},
'tourism': [
'apartment',
'artwork',
'attraction',
'camp_site',
'caravan_site',
'chalet',
'gallery',
'guest_house',
'hostel',
'hotel',
'information',
'motel',
'museum',
'picnic_site',
'viewpoint',
'wilderness_hut',
]
}
};

View file

@ -0,0 +1,12 @@
{
"geometry": null,
"properties": {
"name": "ATM",
"id": "atm",
"overlay": true,
"dataSource": "OverpassAPI",
"icon": "maki-bank",
"query": "(nwr[amenity=atm]; nwr[amenity=bank][atm][atm!=no];);"
},
"type": "Feature"
}

View file

@ -0,0 +1,12 @@
{
"geometry": null,
"properties": {
"name": "Bank",
"id": "bank",
"overlay": true,
"dataSource": "OverpassAPI",
"icon": "maki-bank",
"query": "nwr[amenity=bank];"
},
"type": "Feature"
}

View file

@ -0,0 +1,12 @@
{
"geometry": null,
"properties": {
"name": "Bench",
"id": "bench",
"overlay": true,
"dataSource": "OverpassAPI",
"icon": "temaki-bench",
"query": "nwr[amenity=bench];"
},
"type": "Feature"
}

View file

@ -0,0 +1,12 @@
{
"geometry": null,
"properties": {
"name": "Kneipp water cure",
"id": "kneipp_water_cure",
"overlay": true,
"dataSource": "OverpassAPI",
"icon": "maki-hospital",
"query": "nwr[amenity=kneipp_water_cure];"
},
"type": "Feature"
}

View file

@ -0,0 +1,12 @@
{
"geometry": null,
"properties": {
"name": "Public bath",
"id": "public_bath",
"overlay": true,
"dataSource": "OverpassAPI",
"icon": "maki-water",
"query": "nwr[amenity=public_bath];"
},
"type": "Feature"
}

View file

@ -0,0 +1,12 @@
{
"geometry": null,
"properties": {
"name": "Shelter",
"id": "shelter",
"overlay": true,
"dataSource": "OverpassAPI",
"icon": "maki-shelter",
"query": "nwr[amenity=shelter];"
},
"type": "Feature"
}

View file

@ -0,0 +1,12 @@
{
"geometry": null,
"properties": {
"name": "Shower",
"id": "shower",
"overlay": true,
"dataSource": "OverpassAPI",
"icon": "temaki-shower",
"query": "nwr[amenity=shower];"
},
"type": "Feature"
}

View file

@ -0,0 +1,12 @@
{
"geometry": null,
"properties": {
"name": "Telephone",
"id": "telephone",
"overlay": true,
"dataSource": "OverpassAPI",
"icon": "fas-phone-alt",
"query": "nwr[amenity=telephone];"
},
"type": "Feature"
}

View file

@ -0,0 +1,12 @@
{
"geometry": null,
"properties": {
"name": "Toilets",
"id": "toilets",
"overlay": true,
"dataSource": "OverpassAPI",
"icon": "maki-toilet",
"query": "nwr[amenity=toilets];"
},
"type": "Feature"
}

View file

@ -0,0 +1,12 @@
{
"geometry": null,
"properties": {
"name": "Water point",
"id": "water_point",
"overlay": true,
"dataSource": "OverpassAPI",
"icon": "maki-drinking-water",
"query": "nwr[amenity=water_point];"
},
"type": "Feature"
}

View file

@ -0,0 +1,12 @@
{
"geometry": null,
"properties": {
"name": "Bar",
"id": "bar",
"overlay": true,
"dataSource": "OverpassAPI",
"icon": "maki-bar",
"query": "nwr[amenity=bar];"
},
"type": "Feature"
}

View file

@ -0,0 +1,12 @@
{
"geometry": null,
"properties": {
"name": "BBQ",
"id": "bbq",
"overlay": true,
"dataSource": "OverpassAPI",
"icon": "maki-bbq",
"query": "nwr[amenity=bbq];"
},
"type": "Feature"
}

View file

@ -0,0 +1,12 @@
{
"geometry": null,
"properties": {
"name": "Biergarten",
"id": "biergarten",
"overlay": true,
"dataSource": "OverpassAPI",
"icon": "fas-beer",
"query": "nwr[amenity=biergarten];"
},
"type": "Feature"
}

View file

@ -0,0 +1,12 @@
{
"geometry": null,
"properties": {
"name": "Cafe",
"id": "cafe",
"overlay": true,
"dataSource": "OverpassAPI",
"icon": "maki-cafe",
"query": "nwr[amenity=cafe];"
},
"type": "Feature"
}

View file

@ -0,0 +1,12 @@
{
"geometry": null,
"properties": {
"name": "Drinking water",
"id": "drinking_water",
"overlay": true,
"dataSource": "OverpassAPI",
"icon": "maki-drinking-water",
"query": "nwr[amenity=drinking_water];"
},
"type": "Feature"
}

View file

@ -0,0 +1,12 @@
{
"geometry": null,
"properties": {
"name": "Fast food",
"id": "fast_food",
"overlay": true,
"dataSource": "OverpassAPI",
"icon": "maki-fast-food",
"query": "nwr[amenity=fast_food];"
},
"type": "Feature"
}

View file

@ -0,0 +1,12 @@
{
"geometry": null,
"properties": {
"name": "Food court",
"id": "food_court",
"overlay": true,
"dataSource": "OverpassAPI",
"icon": "maki-restaurant",
"query": "nwr[amenity=food_court];"
},
"type": "Feature"
}

View file

@ -0,0 +1,12 @@
{
"geometry": null,
"properties": {
"name": "Ice cream",
"id": "ice_cream",
"overlay": true,
"dataSource": "OverpassAPI",
"icon": "fas-ice-cream",
"query": "nwr[amenity=ice_cream];"
},
"type": "Feature"
}

View file

@ -0,0 +1,12 @@
{
"geometry": null,
"properties": {
"name": "Pub",
"id": "pub",
"overlay": true,
"dataSource": "OverpassAPI",
"icon": "maki-beer",
"query": "nwr[amenity=pub];"
},
"type": "Feature"
}

View file

@ -0,0 +1,12 @@
{
"geometry": null,
"properties": {
"name": "Restaurant",
"id": "restaurant",
"overlay": true,
"dataSource": "OverpassAPI",
"icon": "maki-restaurant",
"query": "nwr[amenity=restaurant];"
},
"type": "Feature"
}

View file

@ -0,0 +1,12 @@
{
"geometry": null,
"properties": {
"name": "Bicycle parking",
"id": "bicycle_parking",
"overlay": true,
"dataSource": "OverpassAPI",
"icon": "maki-bicycle",
"query": "nwr[amenity=bicycle_parking];"
},
"type": "Feature"
}

View file

@ -0,0 +1,12 @@
{
"geometry": null,
"properties": {
"name": "Bicycle rental",
"id": "bicycle_rental",
"overlay": true,
"dataSource": "OverpassAPI",
"icon": "temaki-bicycle_rental",
"query": "nwr[amenity=bicycle_rental];"
},
"type": "Feature"
}

View file

@ -0,0 +1,12 @@
{
"geometry": null,
"properties": {
"name": "Bicycle repair station",
"id": "bicycle_repair_station",
"overlay": true,
"dataSource": "OverpassAPI",
"icon": "temaki-bicycle_repair",
"query": "nwr[amenity=bicycle_repair_station];"
},
"type": "Feature"
}

View file

@ -0,0 +1,12 @@
{
"geometry": null,
"properties": {
"name": "Boat rental",
"id": "boat_rental",
"overlay": true,
"dataSource": "OverpassAPI",
"icon": "temaki-boat_rental",
"query": "nwr[amenity=boat_rental];"
},
"type": "Feature"
}

View file

@ -0,0 +1,11 @@
{
"geometry": null,
"properties": {
"name": "Boat sharing",
"id": "boat_sharing",
"overlay": true,
"dataSource": "OverpassAPI",
"query": "nwr[amenity=boat_sharing];"
},
"type": "Feature"
}

View file

@ -0,0 +1,12 @@
{
"geometry": null,
"properties": {
"name": "Bus station",
"id": "bus_station",
"overlay": true,
"dataSource": "OverpassAPI",
"icon": "temaki-bus",
"query": "nwr[amenity=bus_station];"
},
"type": "Feature"
}

View file

@ -0,0 +1,12 @@
{
"geometry": null,
"properties": {
"name": "Car rental",
"id": "car_rental",
"overlay": true,
"dataSource": "OverpassAPI",
"icon": "maki-car-rental",
"query": "nwr[amenity=car_rental];"
},
"type": "Feature"
}

View file

@ -0,0 +1,12 @@
{
"geometry": null,
"properties": {
"name": "Car sharing",
"id": "car_sharing",
"overlay": true,
"dataSource": "OverpassAPI",
"icon": "temaki-sign_and_car",
"query": "nwr[amenity=car_sharing];"
},
"type": "Feature"
}

View file

@ -0,0 +1,12 @@
{
"geometry": null,
"properties": {
"name": "Car wash",
"id": "car_wash",
"overlay": true,
"dataSource": "OverpassAPI",
"icon": "temaki-car_wash",
"query": "nwr[amenity=car_wash];"
},
"type": "Feature"
}

View file

@ -0,0 +1,12 @@
{
"geometry": null,
"properties": {
"name": "Charging station",
"id": "charging_station",
"overlay": true,
"dataSource": "OverpassAPI",
"icon": "fas-charging-station",
"query": "nwr[amenity=charging_station];"
},
"type": "Feature"
}

View file

@ -0,0 +1,12 @@
{
"geometry": null,
"properties": {
"name": "Ferry terminal",
"id": "ferry_terminal",
"overlay": true,
"dataSource": "OverpassAPI",
"icon": "temaki-ferry",
"query": "nwr[amenity=ferry_terminal];"
},
"type": "Feature"
}

View file

@ -0,0 +1,12 @@
{
"geometry": null,
"properties": {
"name": "Fuel",
"id": "fuel",
"overlay": true,
"dataSource": "OverpassAPI",
"icon": "maki-fuel",
"query": "nwr[amenity=fuel];"
},
"type": "Feature"
}

View file

@ -0,0 +1,12 @@
{
"geometry": null,
"properties": {
"name": "Grit bin",
"id": "grit_bin",
"overlay": true,
"dataSource": "OverpassAPI",
"icon": "fas-box",
"query": "nwr[amenity=grit_bin];"
},
"type": "Feature"
}

View file

@ -0,0 +1,12 @@
{
"geometry": null,
"properties": {
"name": "Motorcycle parking",
"id": "motorcycle_parking",
"overlay": true,
"dataSource": "OverpassAPI",
"icon": "fas-motorcycle",
"query": "nwr[amenity=motorcycle_parking];"
},
"type": "Feature"
}

View file

@ -0,0 +1,12 @@
{
"geometry": null,
"properties": {
"name": "Parking",
"id": "parking",
"overlay": true,
"dataSource": "OverpassAPI",
"icon": "temaki-car_parked",
"query": "nwr[amenity=parking];"
},
"type": "Feature"
}

View file

@ -0,0 +1,12 @@
{
"geometry": null,
"properties": {
"name": "Parking entrance",
"id": "parking_entrance",
"overlay": true,
"dataSource": "OverpassAPI",
"icon": "maki-entrance-alt1",
"query": "nwr[amenity=parking_entrance];"
},
"type": "Feature"
}

View file

@ -0,0 +1,12 @@
{
"geometry": null,
"properties": {
"name": "Parking space",
"id": "parking_space",
"overlay": true,
"dataSource": "OverpassAPI",
"icon": "temaki-parking_space",
"query": "nwr[amenity=parking_space];"
},
"type": "Feature"
}

View file

@ -0,0 +1,12 @@
{
"geometry": null,
"properties": {
"name": "Taxi",
"id": "taxi",
"overlay": true,
"dataSource": "OverpassAPI",
"icon": "fas-taxi",
"query": "nwr[amenity=taxi];"
},
"type": "Feature"
}

View file

@ -0,0 +1,12 @@
{
"geometry": null,
"properties": {
"name": "Vehicle inspection",
"id": "vehicle_inspection",
"overlay": true,
"dataSource": "OverpassAPI",
"icon": "maki-car",
"query": "nwr[amenity=vehicle_inspection];"
},
"type": "Feature"
}

View file

@ -0,0 +1,12 @@
{
"geometry": null,
"properties": {
"name": "Bakery",
"id": "bakery",
"overlay": true,
"dataSource": "OverpassAPI",
"icon": "maki-bakery",
"query": "nwr[shop=bakery];"
},
"type": "Feature"
}

View file

@ -0,0 +1,12 @@
{
"geometry": null,
"properties": {
"name": "Beverages",
"id": "beverages",
"overlay": true,
"dataSource": "OverpassAPI",
"icon": "temaki-bottles",
"query": "nwr[shop=beverages];"
},
"type": "Feature"
}

View file

@ -0,0 +1,12 @@
{
"geometry": null,
"properties": {
"name": "Butcher",
"id": "butcher",
"overlay": true,
"dataSource": "OverpassAPI",
"icon": "temaki-cleaver",
"query": "nwr[shop=butcher];"
},
"type": "Feature"
}

View file

@ -0,0 +1,12 @@
{
"geometry": null,
"properties": {
"name": "Cheese",
"id": "cheese",
"overlay": true,
"dataSource": "OverpassAPI",
"icon": "fas-cheese",
"query": "nwr[shop=cheese];"
},
"type": "Feature"
}

View file

@ -0,0 +1,12 @@
{
"geometry": null,
"properties": {
"name": "Coffee",
"id": "coffee",
"overlay": true,
"dataSource": "OverpassAPI",
"icon": "temaki-coffee",
"query": "nwr[shop=coffee];"
},
"type": "Feature"
}

View file

@ -0,0 +1,12 @@
{
"geometry": null,
"properties": {
"name": "Convenience",
"id": "convenience",
"overlay": true,
"dataSource": "OverpassAPI",
"icon": "fas-shopping-basket",
"query": "nwr[shop=convenience];"
},
"type": "Feature"
}

View file

@ -0,0 +1,12 @@
{
"geometry": null,
"properties": {
"name": "Greengrocer",
"id": "greengrocer",
"overlay": true,
"dataSource": "OverpassAPI",
"icon": "fas-carrot",
"query": "nwr[shop=greengrocer];"
},
"type": "Feature"
}

View file

@ -0,0 +1,12 @@
{
"geometry": null,
"properties": {
"name": "Health food",
"id": "health_food",
"overlay": true,
"dataSource": "OverpassAPI",
"icon": "maki-shop",
"query": "nwr[shop=health_food];"
},
"type": "Feature"
}

View file

@ -0,0 +1,12 @@
{
"geometry": null,
"properties": {
"name": "Ice cream",
"id": "ice_cream_shop",
"overlay": true,
"dataSource": "OverpassAPI",
"icon": "fas-ice-cream",
"query": "nwr[shop=ice_cream];"
},
"type": "Feature"
}

View file

@ -0,0 +1,12 @@
{
"geometry": null,
"properties": {
"name": "Organic",
"id": "organic",
"overlay": true,
"dataSource": "OverpassAPI",
"icon": "maki-grocery",
"query": "nwr[shop~'supermarket|convenience'][organic][organic!=no];"
},
"type": "Feature"
}

View file

@ -0,0 +1,12 @@
{
"geometry": null,
"properties": {
"name": "Apartment",
"id": "apartment",
"overlay": true,
"dataSource": "OverpassAPI",
"icon": "maki-lodging",
"query": "nwr[tourism=apartment];"
},
"type": "Feature"
}

View file

@ -0,0 +1,12 @@
{
"geometry": null,
"properties": {
"name": "Artwork",
"id": "artwork",
"overlay": true,
"dataSource": "OverpassAPI",
"icon": "maki-art-gallery",
"query": "nwr[tourism=artwork];"
},
"type": "Feature"
}

View file

@ -0,0 +1,12 @@
{
"geometry": null,
"properties": {
"name": "Attraction",
"id": "attraction",
"overlay": true,
"dataSource": "OverpassAPI",
"icon": "maki-star",
"query": "nwr[tourism=attraction];"
},
"type": "Feature"
}

View file

@ -0,0 +1,12 @@
{
"geometry": null,
"properties": {
"name": "Camp site",
"id": "camp_site",
"overlay": true,
"dataSource": "OverpassAPI",
"icon": "maki-campsite",
"query": "nwr[tourism=camp_site];"
},
"type": "Feature"
}

View file

@ -0,0 +1,12 @@
{
"geometry": null,
"properties": {
"name": "Caravan site",
"id": "caravan_site",
"overlay": true,
"dataSource": "OverpassAPI",
"icon": "temaki-camper_trailer",
"query": "nwr[tourism=caravan_site];"
},
"type": "Feature"
}

View file

@ -0,0 +1,12 @@
{
"geometry": null,
"properties": {
"name": "Chalet",
"id": "chalet",
"overlay": true,
"dataSource": "OverpassAPI",
"icon": "temaki-cabin",
"query": "nwr[tourism=chalet];"
},
"type": "Feature"
}

View file

@ -0,0 +1,12 @@
{
"geometry": null,
"properties": {
"name": "Gallery",
"id": "gallery",
"overlay": true,
"dataSource": "OverpassAPI",
"icon": "maki-art-gallery",
"query": "nwr[tourism=gallery];"
},
"type": "Feature"
}

View file

@ -0,0 +1,12 @@
{
"geometry": null,
"properties": {
"name": "Guest house",
"id": "guest_house",
"overlay": true,
"dataSource": "OverpassAPI",
"icon": "maki-lodging",
"query": "nwr[tourism=guest_house];"
},
"type": "Feature"
}

View file

@ -0,0 +1,12 @@
{
"geometry": null,
"properties": {
"name": "Hostel",
"id": "hostel",
"overlay": true,
"dataSource": "OverpassAPI",
"icon": "temaki-bunk_beds",
"query": "nwr[tourism=hostel];"
},
"type": "Feature"
}

View file

@ -0,0 +1,12 @@
{
"geometry": null,
"properties": {
"name": "Hotel",
"id": "hotel",
"overlay": true,
"dataSource": "OverpassAPI",
"icon": "fas-concierge-bell",
"query": "nwr[tourism=hotel];"
},
"type": "Feature"
}

View file

@ -0,0 +1,12 @@
{
"geometry": null,
"properties": {
"name": "Information",
"id": "information",
"overlay": true,
"dataSource": "OverpassAPI",
"icon": "maki-information",
"query": "nwr[tourism=information];"
},
"type": "Feature"
}

View file

@ -0,0 +1,12 @@
{
"geometry": null,
"properties": {
"name": "Motel",
"id": "motel",
"overlay": true,
"dataSource": "OverpassAPI",
"icon": "maki-lodging",
"query": "nwr[tourism=motel];"
},
"type": "Feature"
}

View file

@ -0,0 +1,12 @@
{
"geometry": null,
"properties": {
"name": "Museum",
"id": "museum",
"overlay": true,
"dataSource": "OverpassAPI",
"icon": "temaki-museum",
"query": "nwr[tourism=museum];"
},
"type": "Feature"
}

View file

@ -0,0 +1,12 @@
{
"geometry": null,
"properties": {
"name": "Picnic site",
"id": "picnic_site",
"overlay": true,
"dataSource": "OverpassAPI",
"icon": "maki-picnic-site",
"query": "nwr[tourism=picnic_site];"
},
"type": "Feature"
}

View file

@ -0,0 +1,12 @@
{
"geometry": null,
"properties": {
"name": "Viewpoint",
"id": "viewpoint",
"overlay": true,
"dataSource": "OverpassAPI",
"icon": "temaki-spotting_scope",
"query": "nwr[tourism=viewpoint];"
},
"type": "Feature"
}

View file

@ -0,0 +1,12 @@
{
"geometry": null,
"properties": {
"name": "Wilderness hut",
"id": "wilderness_hut",
"overlay": true,
"dataSource": "OverpassAPI",
"icon": "temaki-cabin",
"query": "nwr[tourism=wilderness_hut];"
},
"type": "Feature"
}

View file

@ -15,7 +15,7 @@
"tooltip": "Mostra més informació sobre BRouter-Web"
},
"credits": {
"boundaries": "Administrative Boundaries: <a href=\"https://osm-boundaries.com\" target=\"_blank\">OSM-Boundaries</a>, <a href=\"https://overpass-api.de/\" target=\"_blank\">Overpass API</a>",
"boundaries": "Fronteres administratives: <a href=\"https://osm-boundaries.com\" target=\"_blank\">Fronteres-OSM</a>, <a href=\"https://overpass-api.de/\" class=\"overpass-url\" target=\"_blank\">API d'Overpass</a>",
"brouter": "BRouter",
"brouter-license": "<a target=\"_blank\" href=\"https://brouter.de/brouter\">BRouter</a> &copy; Arndt Brenschede",
"elevation-data": "Dades d'elevació",
@ -25,7 +25,8 @@
"map-tiles": "Tessel·les del mapa",
"nominatim": "Cerca per <a href=\"https://wiki.openstreetmap.org/wiki/Nominatim\" target=\"_blank\" data-i18n=\"credits.nominatim\">Nominatim</a>",
"openstreetmap": "&copy; <a target=\"_blank\" href=\"https://www.openstreetmap.org/copyright\" >contribuïdors d'OpenStreetMap</a> sota <a target=\"_blank\" href=\"https://opendatacommons.org/licenses/odbl/\" >ODbL</a>",
"title": "Credits"
"pois": "Locations (POIs): <a href=\"https://overpass-api.de/\" class=\"overpass-url\" target=\"_blank\">Overpass API</a>",
"title": "Crèdits"
},
"export": {
"format": "Format",
@ -55,6 +56,7 @@
"mean-cost-factor": "Factor de cost mitjà",
"meter": "metres",
"meter-abbrev": "m",
"no-elevation-data": "No elevation data available for this route.",
"plain-ascend": "Desnivell final",
"stats-info": "Comenceu a dibuixar una ruta per obtenir les estadístiques",
"total-energy": "Energia total",
@ -69,22 +71,27 @@
"layers": {
"add-base": "Afegeix una capa base",
"add-overlay": "Afegeix superposició",
"add-overpass": "Add overpass query",
"custom-layer-name-helptext": "ex: OpenStreetMap",
"custom-layer-name-label": "Custom layer name",
"custom-layer-url-helptext-normal": "URL for normal layers, ex: https://{s}.tile.openstreetmap.org/{z}/{x}/{y}.png",
"custom-layer-url-helptext-overpass": "Overpass Query, ex: nwr[shop]['diet:vegan']['diet:vegan'!=no];",
"custom-layer-url-label": "Custom layer URL/Query",
"customize": "Personalitza les capes",
"opacity-slider": "Control lliscant de l'opacitat",
"placeholder-layer-name": "Nom de la capa personalitzada. (eg: OpenStreetMap)",
"placeholder-layer-url": "URL de la capa personalitzada. (eg: https://{s}.tile.openstreetmap.org/{z}/{x}/{y}.png)",
"overpass-loading-indicator": "Running Overpass API query ...",
"remove-selection": "Elimina la selecció"
},
"loadNogos": {
"defaultProperties": "Propietats per defecte",
"file": "Fitxer (.geojson):",
"file": "File (.geojson)",
"load": "Carrega",
"nogoBuffer": "Zona d'influència de les àrees omeses (en metres):",
"nogoRadius": "Radi de les àrees omeses per punts (en metres)",
"nogoWeight": "Pes de les àrees omeses (-1 vol dir inaccessible)",
"nogoBuffer": "Buffer no-go areas (in meters)",
"nogoRadius": "No-go radius for points (in meters)",
"nogoWeight": "No-go weight (-1 means impassable)",
"source": "Font",
"title": "Carrega les àrees omeses",
"url": "URL: "
"url": "URL"
},
"map": {
"attribution-osm-long": "Contribuidors de l'OpenStreetMap",
@ -96,8 +103,8 @@
"delete-nogo-areas": "Esborra totes les àrees omeses",
"delete-pois": "Esborra tots els punts d'interès",
"delete-route": "Esborra la ruta",
"draw-circlego-start": "Draw limited go-to zone",
"draw-circlego-stop": "Stop drawing limited go-to zone",
"draw-circlego-start": "Dibuixa una zona de pas limitada",
"draw-circlego-stop": "Para de dibuixar una zona de pas limitada",
"draw-poi-start": "Dibuixa punts d'interès",
"draw-poi-stop": "Para de dibuixar punts d'interès",
"draw-route-start": "Dibuixa una ruta",
@ -132,7 +139,7 @@
"edit": "Cliqueu per editar",
"help": "&square; = mou / redimensiona, <span class=\"fa fa-trash-o\"></span> = esborra,<br>clique al cercle per deixar d'editar"
},
"not-applicable-here": "not applicable here",
"not-applicable-here": "no aplicable aquí",
"opacity-slider": "Especifica la transparència de la ruta i els marcadors",
"opacity-slider-shortcut": "{{action}}\n(Mantén premuda la tecla {{key}} per silenciar temporalment)",
"preview": "Previsualitza",
@ -142,6 +149,8 @@
"route-quality-cost": "Codificació del cost",
"route-quality-incline": "Codificació de la inclinació",
"route-quality-shortcut": "{{action}} (tecla {{key}} per commutar)",
"route-tooltip-segment": "Drag to create a new waypoint",
"route-tooltip-waypoint": "Waypoint. Drag to move; Click to remove.",
"strava-biking": "Mostra els segments de bici de Strava",
"strava-running": "Mostra els segments de córrer de Strava",
"strava-shortcut": "{{action}}\n(tecla {{key}} per commutar les capes, cliqueu per recarregar l'àrea actual)",
@ -149,8 +158,7 @@
"zoomOutTitle": "Allunya"
},
"modal": {
"close": "Tanca"
},
"close": "Tanca"},
"navbar": {
"about": "Quant a",
"alternative": {
@ -164,7 +172,7 @@
"load": {
"nogos": "Carrega les àrees omeses",
"title": "Carrega",
"tooltip": "{{tracksAction}} (tecla {{tracksKey}})\n{{nogosAction}} ({{nogosKey}})",
"tooltip": "{{tracksAction}} (tecla {{tracksKey}})\n{{trackAsRouteAction}} ({{trackAsRouteKey}})\n{{nogosAction}} ({{nogosKey}})",
"tracks": "Carrega traces"
},
"profile": {
@ -227,6 +235,7 @@
"europe": "Europa",
"europe-monolingual": "Europa monolingüe",
"overlays": "Superposicions",
"overpass": "Locations (POIs)",
"worldwide": "Arreu del món",
"worldwide-international": "Arreu del món internacional",
"worldwide-monolingual": "Arreu del món monolígüe"
@ -238,11 +247,15 @@
"optional": "Afegeix o elimina capes opcionals",
"optional-layers": "Més",
"overlay-opacity": "Transparència de la superposició",
"overlay-opacity_plural": "Overlays transparency",
"table": {
"URL": "URL",
"URL": "URL/Query",
"empty": "Encara no hi ha cap capa personalitzada configurada.",
"name": "Nom",
"type": "Tipus"
"type": "Tipus",
"type_layer": "Layer",
"type_overlay": "Overlay",
"type_overpass_query": "Overpass Query"
},
"title": "Capes",
"tooltip": "Seleccioneu capes"
@ -260,10 +273,11 @@
},
"title": "Client web de BRouter",
"trackasroute": {
"browse": "Browse",
"explainpoi": "(mostra les fites com a PDI)",
"explaintracklayer": "(mostra traces com a capa separada)",
"file": "Fitxer de traça",
"fuzziness": "grau d'aproximació",
"fuzziness": "Fuzziness",
"pleasewait": "Espereu si us plau.",
"showpois": "PDI",
"title": "Carrega una traça com a ruta",
@ -283,7 +297,7 @@
"upload-error": "Error de càrrega: {{error}}"
},
"whatsnew": {
"new-version": "A new version was released since your last visit. Click <a href='.' data-toggle='modal' data-target='#whatsnew'>here</a> to see what's new!",
"title": "What's new?"
"new-version": "S'ha alliberat una versió nova des de l'última visita. Cliqueu <a href='.' data-toggle='modal' data-target='#whatsnew'>aquí</a> per veure les novetats!",
"title": "Què hi ha de nou?"
}
}

View file

@ -15,7 +15,7 @@
"tooltip": "Mehr Informationen über BRouter-Web anzeigen"
},
"credits": {
"boundaries": "Verwaltungsgrenzen: <a href=\"https://osm-boundaries.com\" target=\"_blank\">OSM-Boundaries</a>, <a href=\"https://overpass-api.de/\" target=\"_blank\">Overpass API</a>",
"boundaries": "Verwaltungsgrenzen: <a href=\"https://osm-boundaries.com\" target=\"_blank\">OSM-Boundaries</a>, <a href=\"https://overpass-api.de/\" class=\"overpass-url\" target=\"_blank\">Overpass API</a>",
"brouter": "BRouter",
"brouter-license": "<a target=\"_blank\" href=\"https://brouter.de/brouter\">BRouter</a> &copy; Arndt Brenschede",
"elevation-data": "Höhendaten",
@ -25,6 +25,7 @@
"map-tiles": "Kartendarstellung",
"nominatim": "Suchen mit <a href=\"https://wiki.openstreetmap.org/wiki/Nominatim\" target=\"_blank\" data-i18n=\"credits.nominatim\">Nominatim</a>",
"openstreetmap": "&copy; <a target=\"_blank\" href=\"https://www.openstreetmap.org/copyright\" >OpenStreetMap contributors</a> unter <a target=\"_blank\" href=\"https://opendatacommons.org/licenses/odbl/\" >ODbL</a>",
"pois": "Orte (POIs): <a href=\"https://overpass-api.de/\" class=\"overpass-url\" target=\"_blank\">Overpass API</a>",
"title": "Credits"
},
"export": {
@ -55,6 +56,7 @@
"mean-cost-factor": "durchschnittlicher Kostenfaktor",
"meter": "Meter",
"meter-abbrev": "m",
"no-elevation-data": "Keine Höhendaten für diese Route verfügbar",
"plain-ascend": "einfach aufsteigend",
"stats-info": "Route zeichnen, um Statistiken zu sehen.",
"total-energy": "Gesamtenergie",
@ -69,22 +71,27 @@
"layers": {
"add-base": "Basisebene hinzufügen",
"add-overlay": "Overlay hinzufügen",
"add-overpass": "Overpass Abfrage hinzufügen",
"custom-layer-name-helptext": "Bsp: OpenStreetMap",
"custom-layer-name-label": "Name der benutzerdefinierten Ebene",
"custom-layer-url-helptext-normal": "URL für normale Ebenen, z.B.: https://{s}.tile.openstreetmap.org/{z}/{x}/{y}.png",
"custom-layer-url-helptext-overpass": "Overpass Abfrage, z.B.: nwr[shop]['diet:vegan']['diet:vegan'!=no];",
"custom-layer-url-label": "URL/Abfrage der benutzerdefinierten Ebene",
"customize": "Ebenen anpassen",
"opacity-slider": "Regler für Deckkraft",
"placeholder-layer-name": "angepasster Ebenenname (Bsp: OpenStreetMap)",
"placeholder-layer-url": "angepasste Ebenen-URL (Bsp: https://{s}.tile.openstreetmap.org/{z}/{x}/{y}.png)",
"overpass-loading-indicator": "Overpass API Abfrage läuft ...",
"remove-selection": "Auswahl entfernen"
},
"loadNogos": {
"defaultProperties": "Standardeigenschaften",
"file": "Datei (.geojson):",
"file": "Datei (.geojson)",
"load": "Laden",
"nogoBuffer": "Puffer um No-go-Areas (in Metern):",
"nogoRadius": "No-go Radius für Punkte (in Meter):",
"nogoWeight": "No-go Gewichtung (-1 bedeutet unpassierbar):",
"nogoBuffer": "Puffer um No-go-Areas (in Metern)",
"nogoRadius": "No-go Radius für Punkte (in Meter)",
"nogoWeight": "No-go Gewichtung (-1 bedeutet unpassierbar)",
"source": "Quelle",
"title": "No-go-Areas laden",
"url": "URL:"
"url": "URL"
},
"map": {
"attribution-osm-long": "OpenStreetMap-Mitwirkende",
@ -142,6 +149,8 @@
"route-quality-cost": "Kostencodierung",
"route-quality-incline": "Steigungscodierung",
"route-quality-shortcut": "{{action}} ({{key}} Taste zum Ein-/Ausschalten)",
"route-tooltip-segment": "Ziehen, um einen neuen Wegpunkt anzulegen",
"route-tooltip-waypoint": "Wegpunkt. Zum Verschieben ziehen; zum Löschen klicken",
"strava-biking": "Zeige Strava Radfahrsegmente",
"strava-running": "Zeige Strava Läufersegmente",
"strava-shortcut": "{{action}}\n({{key}} Taste um Ebene ein-/auszublenden, Klicken um aktuellen Ausschnitt neu zu laden)",
@ -149,8 +158,7 @@
"zoomOutTitle": "Herauszoomen"
},
"modal": {
"close": "Schließen"
},
"close": "Schließen"},
"navbar": {
"about": "Über",
"alternative": {
@ -164,8 +172,8 @@
"load": {
"nogos": "No-go-Areas laden",
"title": "Laden",
"tooltip": "{{tracksAction}} ({{tracksKey}} Taste)\n{{nogosAction}} ({{nogosKey}})",
"tracks": "Touren laden"
"tooltip": "{{tracksAction}} ({{tracksKey}} Taste)\n{{trackAsRouteAction}} ({{trackAsRouteKey}})\n{{nogosAction}} ({{nogosKey}})",
"tracks": "Track laden"
},
"profile": {
"car-eco": "Auto (effizient)",
@ -227,6 +235,7 @@
"europe": "Europa",
"europe-monolingual": "Europa einsprachig",
"overlays": "Überlagerungen",
"overpass": "Orte (POIs)",
"worldwide": "Weltweit",
"worldwide-international": "Weltweit international",
"worldwide-monolingual": "Weltweit einsprachig"
@ -238,11 +247,15 @@
"optional": "Optionale Ebenen hinzufügen oder entfernen",
"optional-layers": "Mehr",
"overlay-opacity": "Transparenz der Überlagerung",
"overlay-opacity_plural": "Transparenz der Überlagerung",
"table": {
"URL": "URL",
"URL": "URL/Abfrage",
"empty": "Noch keine benutzerdefinierte Ebene definiert.",
"name": "Name",
"type": "Typ"
"type": "Typ",
"type_layer": "Ebene",
"type_overlay": "Überlagerung",
"type_overpass_query": "Overpass Abfrage"
},
"title": "Ebenen",
"tooltip": "Ebenen auswählen"
@ -260,13 +273,14 @@
},
"title": "BRouter Web Client",
"trackasroute": {
"browse": "Durchsuchen",
"explainpoi": "(Wegpunkte als POIs anzeigen)",
"explaintracklayer": "(Tour als separate Ebene anzeigen)",
"file": "Tourdatei",
"file": "Track-Datei",
"fuzziness": "Unschärfe",
"pleasewait": "Bitte warten!",
"showpois": "POIs",
"title": "Tour als Route laden",
"title": "Track als Route laden",
"tracklayer": "Tour-Ebene",
"tuning": "Justierung"
},
@ -279,11 +293,11 @@
"profile-error": "Profil-Fehler: keine oder leere Antwort vom Server",
"strava-error": "Fehler beim Laden der Strava Segmente: {{error}}",
"temporary-profile": "<strong>Note:</strong> Hochgeladene benutzerdefinierte Profile nur verübergehend auf dem Server zwischengespeichert. <br/>Bitte Bearbeitungen auf dem lokalen PC speichern.",
"tracks-load-error": "Fehler beim Laden der Touren: {{error}}",
"tracks-load-error": "Fehler beim Laden von tracks: {{error}}",
"upload-error": "Fehler beim Hochladen: {{error}}"
},
"whatsnew": {
"new-version": "A new version was released since your last visit. Click <a href='.' data-toggle='modal' data-target='#whatsnew'>here</a> to see what's new!",
"title": "What's new?"
"new-version": "Seit dem letzten Besuch wurde eine neue Version veröffentlicht. <a href='.' data-toggle='modal' data-target='#whatsnew'>Hier</a> klicken, um zu sehen, was neu ist!",
"title": "Was ist neu?"
}
}

View file

@ -15,7 +15,7 @@
"tooltip": "Show more information about BRouter-Web"
},
"credits": {
"boundaries": "Administrative Boundaries: <a href=\"https://osm-boundaries.com\" target=\"_blank\">OSM-Boundaries</a>, <a href=\"https://overpass-api.de/\" target=\"_blank\">Overpass API</a>",
"boundaries": "Administrative Boundaries: <a href=\"https://osm-boundaries.com\" target=\"_blank\">OSM-Boundaries</a>, <a href=\"https://overpass-api.de/\" class=\"overpass-url\" target=\"_blank\">Overpass API</a>",
"brouter": "BRouter",
"brouter-license": "<a target=\"_blank\" href=\"https://brouter.de/brouter\">BRouter</a> &copy; Arndt Brenschede",
"elevation-data": "Elevation data",
@ -25,6 +25,7 @@
"map-tiles": "Map tiles",
"nominatim": "Search by <a href=\"https://wiki.openstreetmap.org/wiki/Nominatim\" target=\"_blank\" data-i18n=\"credits.nominatim\">Nominatim</a>",
"openstreetmap": "&copy; <a target=\"_blank\" href=\"https://www.openstreetmap.org/copyright\" >OpenStreetMap contributors</a> under <a target=\"_blank\" href=\"https://opendatacommons.org/licenses/odbl/\" >ODbL</a>",
"pois": "Locations (POIs): <a href=\"https://overpass-api.de/\" class=\"overpass-url\" target=\"_blank\">Overpass API</a>",
"title": "Credits"
},
"export": {
@ -70,22 +71,27 @@
"layers": {
"add-base": "Add base layer",
"add-overlay": "Add overlay",
"add-overpass": "Add overpass query",
"custom-layer-name-helptext": "ex: OpenStreetMap",
"custom-layer-name-label": "Custom layer name",
"custom-layer-url-helptext-normal": "URL for normal layers, ex: https://{s}.tile.openstreetmap.org/{z}/{x}/{y}.png",
"custom-layer-url-helptext-overpass": "Overpass Query, ex: nwr[shop]['diet:vegan']['diet:vegan'!=no];",
"custom-layer-url-label": "Custom layer URL/Query",
"customize": "Customize layers",
"opacity-slider": "Opacity slider",
"placeholder-layer-name": "Custom layer name. (ex: OpenStreetMap)",
"placeholder-layer-url": "Custom layer URL. (ex: https://{s}.tile.openstreetmap.org/{z}/{x}/{y}.png)",
"overpass-loading-indicator": "Running Overpass API query ...",
"remove-selection": "Remove selection"
},
"loadNogos": {
"defaultProperties": "Default properties",
"file": "File (.geojson): ",
"file": "File (.geojson)",
"load": "Load",
"nogoBuffer": "Buffer no-go areas (in meters): ",
"nogoRadius": "No-go radius for points (in meters): ",
"nogoWeight": "No-go weight (-1 means impassable): ",
"nogoBuffer": "Buffer no-go areas (in meters)",
"nogoRadius": "No-go radius for points (in meters)",
"nogoWeight": "No-go weight (-1 means impassable)",
"source": "Source",
"title": "Load no-go areas",
"url": "URL: "
"url": "URL"
},
"map": {
"attribution-osm-long": "OpenStreetMap contributors",
@ -152,7 +158,8 @@
"zoomOutTitle": "Zoom out"
},
"modal": {
"close": "Close"
"close": "Close",
"or": ""
},
"navbar": {
"about": "About",
@ -167,7 +174,7 @@
"load": {
"nogos": "Load no-go areas",
"title": "Load",
"tooltip": "{{tracksAction}} ({{tracksKey}} key)\n{{nogosAction}} ({{nogosKey}})",
"tooltip": "{{tracksAction}} ({{tracksKey}} key)\n{{trackAsRouteAction}} ({{trackAsRouteKey}})\n{{nogosAction}} ({{nogosKey}})",
"tracks": "Load tracks"
},
"profile": {
@ -230,6 +237,7 @@
"europe": "Europe",
"europe-monolingual": "Europe monolingual",
"overlays": "Overlays",
"overpass": "Locations (POIs)",
"worldwide": "Worldwide",
"worldwide-international": "Worldwide international",
"worldwide-monolingual": "Worldwide monolingual"
@ -243,12 +251,13 @@
"overlay-opacity": "Overlay transparency",
"overlay-opacity_plural": "Overlays transparency",
"table": {
"URL": "URL",
"URL": "URL/Query",
"empty": "No custom layer configured yet.",
"name": "Name",
"type": "Type",
"type_layer": "Layer",
"type_overlay": "Overlay"
"type_overlay": "Overlay",
"type_overpass_query": "Overpass Query"
},
"title": "Layers",
"tooltip": "Select layers"
@ -266,10 +275,11 @@
},
"title": "BRouter web client",
"trackasroute": {
"browse": "Browse",
"explainpoi": "(show waypoints as POI's)",
"explaintracklayer": "(show Track as separate Layer)",
"file": "Trackfile",
"fuzziness": "fuzziness",
"fuzziness": "Fuzziness",
"pleasewait": "Please wait!",
"showpois": "POI's",
"title": "Load Track as Route",

View file

@ -15,7 +15,7 @@
"tooltip": "Show more information about BRouter-Web"
},
"credits": {
"boundaries": "Administrative Boundaries: <a href=\"https://osm-boundaries.com\" target=\"_blank\">OSM-Boundaries</a>, <a href=\"https://overpass-api.de/\" target=\"_blank\">Overpass API</a>",
"boundaries": "Administrative Boundaries: <a href=\"https://osm-boundaries.com\" target=\"_blank\">OSM-Boundaries</a>, <a href=\"https://overpass-api.de/\" class=\"overpass-url\" target=\"_blank\">Overpass API</a>",
"brouter": "BRouter",
"brouter-license": "<a target=\"_blank\" href=\"https://brouter.de/brouter\">BRouter</a> &copy; Arndt Brenschede",
"elevation-data": "Elevation data",
@ -25,6 +25,7 @@
"map-tiles": "Map tiles",
"nominatim": "Search by <a href=\"https://wiki.openstreetmap.org/wiki/Nominatim\" target=\"_blank\" data-i18n=\"credits.nominatim\">Nominatim</a>",
"openstreetmap": "&copy; <a target=\"_blank\" href=\"https://www.openstreetmap.org/copyright\" >OpenStreetMap contributors</a> under <a target=\"_blank\" href=\"https://opendatacommons.org/licenses/odbl/\" >ODbL</a>",
"pois": "Locations (POIs): <a href=\"https://overpass-api.de/\" class=\"overpass-url\" target=\"_blank\">Overpass API</a>",
"title": "Credits"
},
"export": {
@ -55,6 +56,7 @@
"mean-cost-factor": "Mean cost factor",
"meter": "metroj",
"meter-abbrev": "m",
"no-elevation-data": "No elevation data available for this route.",
"plain-ascend": "Plain ascend",
"stats-info": "Start drawing a route to get stats.",
"total-energy": "Total Energy",
@ -69,22 +71,27 @@
"layers": {
"add-base": "Add base layer",
"add-overlay": "Add overlay",
"add-overpass": "Add overpass query",
"custom-layer-name-helptext": "ex: OpenStreetMap",
"custom-layer-name-label": "Custom layer name",
"custom-layer-url-helptext-normal": "URL for normal layers, ex: https://{s}.tile.openstreetmap.org/{z}/{x}/{y}.png",
"custom-layer-url-helptext-overpass": "Overpass Query, ex: nwr[shop]['diet:vegan']['diet:vegan'!=no];",
"custom-layer-url-label": "Custom layer URL/Query",
"customize": "Customize layers",
"opacity-slider": "Opacity slider",
"placeholder-layer-name": "Custom layer name. (ex: OpenStreetMap)",
"placeholder-layer-url": "Custom layer URL. (ex: https://{s}.tile.openstreetmap.org/{z}/{x}/{y}.png)",
"overpass-loading-indicator": "Running Overpass API query ...",
"remove-selection": "Remove selection"
},
"loadNogos": {
"defaultProperties": "Default properties",
"file": "File (.geojson): ",
"file": "File (.geojson)",
"load": "Load",
"nogoBuffer": "Buffer no-go areas (in meters): ",
"nogoRadius": "No-go radius for points (in meters): ",
"nogoWeight": "No-go weight (-1 means impassable): ",
"nogoBuffer": "Buffer no-go areas (in meters)",
"nogoRadius": "No-go radius for points (in meters)",
"nogoWeight": "No-go weight (-1 means impassable)",
"source": "Fonto",
"title": "Load no-go areas",
"url": "URL: "
"url": "URL"
},
"map": {
"attribution-osm-long": "OpenStreetMap contributors",
@ -142,6 +149,8 @@
"route-quality-cost": "Cost coding",
"route-quality-incline": "Incline coding",
"route-quality-shortcut": "{{action}} ({{key}} key to toggle)",
"route-tooltip-segment": "Drag to create a new waypoint",
"route-tooltip-waypoint": "Waypoint. Drag to move; Click to remove.",
"strava-biking": "Show Strava biking segments",
"strava-running": "Show Strava running segments",
"strava-shortcut": "{{action}}\n({{key}} key to toggle layer, click to reload for current area)",
@ -149,8 +158,7 @@
"zoomOutTitle": "Malgrandigi"
},
"modal": {
"close": "Fermi"
},
"close": "Fermi"},
"navbar": {
"about": "Pri",
"alternative": {
@ -164,7 +172,7 @@
"load": {
"nogos": "Load no-go areas",
"title": "Load",
"tooltip": "{{tracksAction}} ({{tracksKey}} key)\n{{nogosAction}} ({{nogosKey}})",
"tooltip": "{{tracksAction}} ({{tracksKey}} key)\n{{trackAsRouteAction}} ({{trackAsRouteKey}})\n{{nogosAction}} ({{nogosKey}})",
"tracks": "Load tracks"
},
"profile": {
@ -227,6 +235,7 @@
"europe": "Eŭropo",
"europe-monolingual": "Europe monolingual",
"overlays": "Tegiloj",
"overpass": "Locations (POIs)",
"worldwide": "Worldwide",
"worldwide-international": "Worldwide international",
"worldwide-monolingual": "Worldwide monolingual"
@ -238,11 +247,15 @@
"optional": "Add or remove optional layers",
"optional-layers": "Pli",
"overlay-opacity": "Overlay transparency",
"overlay-opacity_plural": "Overlays transparency",
"table": {
"URL": "URL",
"URL": "URL/Query",
"empty": "No custom layer configured yet.",
"name": "Nomo",
"type": "Type"
"type": "Type",
"type_layer": "Layer",
"type_overlay": "Overlay",
"type_overpass_query": "Overpass Query"
},
"title": "Layers",
"tooltip": "Select layers"
@ -260,10 +273,11 @@
},
"title": "BRouter web client",
"trackasroute": {
"browse": "Browse",
"explainpoi": "(show waypoints as POI's)",
"explaintracklayer": "(show Track as separate Layer)",
"file": "Trackfile",
"fuzziness": "fuzziness",
"fuzziness": "Fuzziness",
"pleasewait": "Please wait!",
"showpois": "POI's",
"title": "Load Track as Route",

303
locales/es.json Normal file
View file

@ -0,0 +1,303 @@
{
"about": {
"bug-reports": "Informes de errores y solicitudes de funciones:",
"bug-reports-back": "servidor / backend, motor de enrutamiento, aplicación de Android, perfiles, sitio brouter.de",
"bug-reports-front": "cliente web / frontend.",
"chat": "Chatea con usuarios y desarrolladores",
"contact": "Contacto:",
"contact-language": "El idioma preferido es el inglés, ya que contamos con colaboradores y usuarios internacionales.",
"data": "Datos:",
"data-description": "Esta basado en <a href=\"https://www.openstreetmap.org\" target=\"_blank\">OpenStreetMap</a>. Por lo general se actualiza a diario, consulte las fechas <a href=\"https://brouter.de/brouter/segments4/\" target=\"_blank\">de los archivos</a>.",
"description": "Servicio en línea del motor de enrutamiento BRouter. Para la aplicación de Android sin conexión y más información, consulte <a href=\"https://brouter.de/\" target=\"_blank\">brouter.de</a>",
"details": "<i><a href=\"{{privacyPolicyUrl}}\" target=\"_blank\">Política de privacidad</a></i>, \n<i><a href=\"https://github.com/nrenner/brouter-web#credits-and-licenses\" target=\"_blank\">Creditos</a></i>,\n<i><a href=\"https://github.com/nrenner/brouter-web/blob/master/CHANGELOG.md\" target=\"_blank\">Registro de cambios</a></i> y\n<i><a href=\"https://github.com/nrenner/brouter-web#readme\" target=\"_blank\">más información</a></i> sobre el cliente.",
"support": "Discusiones / preguntas generales, soporte",
"title": "Acerca de",
"tooltip": "Mostrar más información sobre BRouter-Web"
},
"credits": {
"boundaries": "Límites administrativos: <a href=\"https://osm-boundaries.com\" target=\"_blank\">OSM-Boundaries</a>, <a href=\"https://overpass-api.de/\" class=\"overpass-url\" target=\"_blank\">Overpass API</a>",
"brouter": "BRouter",
"brouter-license": "<a target=\"_blank\" href=\"https://brouter.de/brouter\">BRouter</a> &copy; Arndt Brenschede",
"elevation-data": "Datos de elevación",
"esri-license": "<a target=\"_blank\" href=\"http://goto.arcgisonline.com/maps/World_Imagery\">Imágenes del mundo</a> &copy; <a target=\"_blank\" href=\"https://www.esri.com/\">Esri</a>, fuentes: Esri, DigitalGlobe, Earthstar Geographics, CNES/Airbus DS, GeoEye, USDA FSA, USGS, Getmapping, Aerogrid, IGN, IGP, and the GIS User Community",
"esri-tiles": "Imágenes Esri World",
"map-data": "Datos del mapa",
"map-tiles": "Teselas del mapa",
"nominatim": "Búsqueda por <a href=\"https://wiki.openstreetmap.org/wiki/Nominatim\" target=\"_blank\" data-i18n=\"credits.nominatim\">Nominatim</a>",
"openstreetmap": "&copy; <a target=\"_blank\" href=\"https://www.openstreetmap.org/copyright\" >Colaboradores de OpenStreetMap</a> bajo <a target=\"_blank\" href=\"https://opendatacommons.org/licenses/odbl/\" >ODbL</a>",
"pois": "Ubicaciones (PDI): <a href=\"https://overpass-api.de/\" class=\"overpass-url\" target=\"_blank\">Overpass API</a>",
"title": "Créditos"
},
"export": {
"format": "Formato",
"format_csv": "CSV",
"format_geojson": "GeoJSON",
"format_gpx": "GPX",
"format_kml": "KML",
"include": "Incluir",
"include_waypoints": "Waypoints",
"route-from-to": "{{from}} -> {{to}} ({{distance}}km)",
"route-loop": "{{from}} ({{distance}}km)",
"title": "Exportar ruta",
"trackname": "Nombre"
},
"footer": {
"ascend": "Ascensión",
"cost": "Costo",
"distance": "Distancia",
"elevation-chart": "Alternar gráfico de elevación",
"energy-per-100km": "Energía por 100 km",
"hours": "horas",
"hours-abbrev": "h",
"kilometer": "kilómetros",
"kilometer-abbrev": "km",
"kilowatthour": "kilovatios hora",
"kilowatthour-abbrev": "kWh",
"mean-cost-factor": "Factor de costo medio",
"meter": "metros",
"meter-abbrev": "m",
"no-elevation-data": "No hay datos de elevación disponibles para esta ruta.",
"plain-ascend": "Ascenso llano",
"stats-info": "Empiece a trazar una ruta para obtener estadísticas.",
"total-energy": "Energia total",
"travel-time": "Tiempo de viaje"
},
"keyboard": {
"backspace": "Retroceso",
"escape": "Escape",
"generic-shortcut": "{{action}} (tecla {{key}})",
"shift": "Mayús"
},
"layers": {
"add-base": "Añadir capa base",
"add-overlay": "Añadir superposición",
"add-overpass": "Agregar consulta de overpass",
"custom-layer-name-helptext": "por ejemplo: OpenStreetMap",
"custom-layer-name-label": "Nombre de la capa personalizada",
"custom-layer-url-helptext-normal": "URL para capas normales, por ejemplo: https://{s}.tile.openstreetmap.org/{z}/{x}/{y}.png",
"custom-layer-url-helptext-overpass": "Consulta de Overpass, por ejemplo: nwr[shop]['diet:vegan']['diet:vegan'!=no];",
"custom-layer-url-label": "URL / consulta de capa personalizada",
"customize": "Personalizar capas",
"opacity-slider": "Control deslizante de opacidad",
"overpass-loading-indicator": "Ejecutando la consulta de la API de Overpass ...",
"remove-selection": "Eliminar selección"
},
"loadNogos": {
"defaultProperties": "Propiedades por defecto",
"file": "Archivo (.geojson)",
"load": "Cargar",
"nogoBuffer": "Buffer de áreas prohibidas (en metros)",
"nogoRadius": "Radio de prohibición de puntos (en metros)",
"nogoWeight": "Peso de prohibición (-1 significa intransitable)",
"source": "Fuente",
"title": "Cargar áreas prohibidas",
"url": "URL"
},
"map": {
"attribution-osm-long": "Colaboradores de OpenStreetMap",
"attribution-osm-short": "OpenStreetMap",
"clear-route": "Borrar datos de ruta",
"copyright": "Copyright",
"cycling": "Ciclismo",
"delete-last-point": "Eliminar último punto",
"delete-nogo-areas": "Eliminar todas las áreas prohibidas",
"delete-pois": "Eliminar todos los puntos de interés",
"delete-route": "Eliminar ruta",
"draw-circlego-start": "Dibujar zona prohibida",
"draw-circlego-stop": "Dejar de dibujar una zona prohibida",
"draw-poi-start": "Dibujar puntos de interés",
"draw-poi-stop": "Deja de dibujar puntos de interés",
"draw-route-start": "Dibujar ruta",
"draw-route-stop": "Dejar de dibujar la ruta",
"enter-poi-name": "Ingrese el nombre del punto de interés",
"geocoder": "Buscar",
"geocoder-placeholder": "Buscar...",
"hikebike-hillshading": "Sombreado",
"hiking": "Senderismo",
"layer": {
"bing": "Bing Aerial",
"cycle": "OpenCycleMap (Thunderf.)",
"cycling": "Ciclismo (senderos marcados)",
"digitalglobe": "Imágenes recientes de DigitalGlobe",
"esri": "Imágenes de Esri World",
"hikebike-hillshading": "Sombreado de colinas (mapa de senderismo y bicicleta)",
"hiking": "Senderismo (senderos marcados)",
"osm": "OpenStreetMap",
"osmde": "OpenStreetMap.de",
"outdoors": "Al aire libre (Thunderforest)",
"route-quality": "Codificación de calidad de ruta",
"stamen-terrain": "Terreno (Stamen)",
"strava-segments": "Segmentos de Strava",
"topo": "OpenTopoMap"
},
"loading": "Cargando...",
"locate-me": "Muéstrame dónde estoy",
"nogo": {
"cancel": "Cancelar el dibujo del área prohibida",
"click-drag": "Haga clic y arrastre para dibujar un círculo.",
"draw": "Dibujar un área circular prohibida",
"edit": "Click para editar",
"help": "&square; = mover / cambiar el tamaño, <span class=\"fa fa-trash-o\"></span>= eliminar, <br> haga clic en el círculo para salir de la edición"
},
"not-applicable-here": "no aplicable aquí",
"opacity-slider": "Establecer la transparencia del seguimiento de la ruta y los marcadores",
"opacity-slider-shortcut": "{{action}}\n(Mantenga presionada la tecla {{key}} para silenciar temporalmente)",
"preview": "Previsualizar",
"privacy": "Privacidad",
"reverse-route": "Ruta inversa",
"route-quality-altitude": "Codificación de altitud",
"route-quality-cost": "Codificación de costos",
"route-quality-incline": "Codificación de inclinación",
"route-quality-shortcut": "{{action}} (tecla {{key}} para alternar)",
"route-tooltip-segment": "Arrastre para crear un nuevo waypoint",
"route-tooltip-waypoint": "Waypoint. Arrastre para mover; Haga clic para eliminar.",
"strava-biking": "Mostrar segmentos de ciclismo de Strava",
"strava-running": "Mostrar segmentos de carrera de Strava",
"strava-shortcut": "{{action}}\n(tecla {{key}} para alternar la capa, haga clic para volver a cargar el área actual)",
"zoomInTitle": "Acercarse",
"zoomOutTitle": "Alejarse"
},
"modal": {
"close": "Cerrar"},
"navbar": {
"about": "Acerca de",
"alternative": {
"first": "1ª Alternativa",
"original": "Original",
"second": "2ª Alternativa",
"third": "3ª Alternativa"
},
"export": "Exportar",
"export-tooltip": "Exportar ruta",
"load": {
"nogos": "Cargar áreas prohibidas",
"title": "Cargar",
"tooltip": "{{tracksAction}} (tecla {{tracksKey}})\n{{trackAsRouteAction}} ({{trackAsRouteKey}})\n{{nogosAction}} ({{nogosKey}})",
"tracks": "Cargar pistas"
},
"profile": {
"car-eco": "Automóvil (económico)",
"car-fast": "Automóvil (rápido)",
"car-test": "Automóvil (test)",
"custom": "Personalizado",
"fastbike": "Fastbike",
"fastbike-asia-pacific": "Fastbike (Asia Pacífico)",
"fastbike-lowtraffic": "Fastbike (poco tráfico)",
"hiking-beta": "Senderismo (beta)",
"moped": "Ciclomotor",
"rail": "Ferrocarril",
"river": "Fluvial",
"safety": "Segura",
"shortest": "Más corta",
"trekking": "Bicicleta de trekking",
"trekking-ignore-cr": "Bicicleta de trekking (ignorar rutas en bicicleta)",
"trekking-noferries": "Bicicleta de trekking (sin ferries)",
"trekking-nosteps": "Bicicleta de trekking (sin escalones)",
"trekking-steep": "Bicicleta de trekking (empinada)",
"vm-forum-liegerad-schnell": "Bicicleta reclinada (rápida)",
"vm-forum-velomobil-schnell": "Velomobile (rápido)"
},
"profile-tooltip": "\n(tecla {{key}} para cambiar)"
},
"sidebar": {
"analysis": {
"header": {
"highway": "Carretera",
"smoothness": "Suavidad",
"surface": "Superficie"
},
"table": {
"category": "Categoría",
"length": "Longitud",
"total_known": "Total conocido:",
"unknown": "Desconocido"
},
"title": "Análisis",
"tooltip": "Analizar ruta"
},
"customize-profile": {
"title": "Personalizar perfil",
"tooltip": "Personalizar perfil"
},
"data": {
"sync-map": "Sincronizar mapa",
"title": "Datos",
"tooltip": "Mostrar tabla de datos de ruta detallada"
},
"itinerary": {
"title": "Itinerario",
"tooltip": "Mostrar itinerario"
},
"layers": {
"category": {
"base-layers": "Capas base",
"country": "País",
"europe": "Europa",
"europe-monolingual": "Monolingüe Europa",
"overlays": "Superposiciones",
"overpass": "Ubicaciones (PDI)",
"worldwide": "Mundial",
"worldwide-international": "Internacional mundial",
"worldwide-monolingual": "Monolingüe mundial"
},
"collapse": "Desplegar todo",
"custom-layers": "Capas personalizadas",
"customize": "Añadir o eliminar capas personalizadas",
"expand": "Expandir todo",
"optional": "Añadir o eliminar capas opcionales",
"optional-layers": "Más",
"overlay-opacity": "Transparencia de superposición",
"overlay-opacity_plural": "Transparencia de superposiciones",
"table": {
"URL": "URL/Consulta",
"empty": "No hay una capa personalizada configurada todavía.",
"name": "Nombre",
"type": "Tipo",
"type_layer": "Capa",
"type_overlay": "Superposición",
"type_overpass_query": "Consulta de Overpass"
},
"title": "Capas",
"tooltip": "Seleccionar capas"
},
"profile": {
"apply": "Aplicar",
"clear": "Limpiar",
"help": "Ayuda",
"no_easy_configuration_warning": "No hay una configuración fácil disponible para este perfil.",
"options": "Opciones",
"placeholder": "Escriba su perfil personalizado aquí.",
"profile": "Perfil"
},
"tab-tooltip": "{{action}}\n(tecla {{toggleKey}} para alternar, {{switchKey}} para cambiar a la siguiente pestaña)"
},
"title": "Cliente web de BRoute",
"trackasroute": {
"browse": "Navegar",
"explainpoi": "(mostrar waypoints como PDI)",
"explaintracklayer": "(mostrar la pista como una capa separada)",
"file": "Trackfile",
"fuzziness": "Borrosidad",
"pleasewait": "Espere",
"showpois": "PDI",
"title": "Cargar pista como ruta",
"tracklayer": "Capa de pista",
"tuning": "Afinación"
},
"warning": {
"cannot-get-route": "Error al obtener la URL de ruta",
"invalid-route-from": "El marcador de inicio está demasiado lejos de una ruta.",
"invalid-route-to": "El marcador de destino está demasiado lejos de una ruta.",
"no-response": "sin respuesta del servidor",
"no-route-found": "Error: no se puede encontrar una ruta para los puntos dados. ¿Quizás intentando acercarlos a las carreteras?",
"profile-error": "Error de perfil: sin respuesta del servidor",
"strava-error": "Error al obtener segmentos de Strava: {{error}}",
"temporary-profile": "<strong>Nota:</strong> Los perfiles personalizados cargados solo se almacenan en caché temporalmente en el servidor.<br/> Guarde sus ediciones en su PC local.",
"tracks-load-error": "Error al cargar pistas: {{error}}",
"upload-error": "Error de carga: {{error}}"
},
"whatsnew": {
"new-version": "Se lanzó una nueva versión desde su última visita. Haga clic <a href='.' data-toggle='modal' data-target='#whatsnew'>aquí</a> para ver las novedades.",
"title": "Novedades"
}
}

View file

@ -15,7 +15,7 @@
"tooltip": "Show more information about BRouter-Web"
},
"credits": {
"boundaries": "Administrative Boundaries: <a href=\"https://osm-boundaries.com\" target=\"_blank\">OSM-Boundaries</a>, <a href=\"https://overpass-api.de/\" target=\"_blank\">Overpass API</a>",
"boundaries": "Administrative Boundaries: <a href=\"https://osm-boundaries.com\" target=\"_blank\">OSM-Boundaries</a>, <a href=\"https://overpass-api.de/\" class=\"overpass-url\" target=\"_blank\">Overpass API</a>",
"brouter": "BRouter",
"brouter-license": "<a target=\"_blank\" href=\"https://brouter.de/brouter\">BRouter</a> &copy; Arndt Brenschede",
"elevation-data": "Datos de elevación",
@ -25,6 +25,7 @@
"map-tiles": "Tiles del mapa",
"nominatim": "Búsqueda por <a href=\"https://wiki.openstreetmap.org/wiki/Nominatim\" target=\"_blank\" data-i18n=\"credits.nominatim\">Nominatim</a>",
"openstreetmap": "&copy; <a target=\"_blank\" href=\"https://www.openstreetmap.org/copyright\" >Colaboradores de OpenStreetMap</a> bajo <a target=\"_blank\" href=\"https://opendatacommons.org/licenses/odbl/\" >ODbL</a>",
"pois": "Locations (POIs): <a href=\"https://overpass-api.de/\" class=\"overpass-url\" target=\"_blank\">Overpass API</a>",
"title": "Credits"
},
"export": {
@ -55,6 +56,7 @@
"mean-cost-factor": "Factor de costo medio",
"meter": "metros",
"meter-abbrev": "m",
"no-elevation-data": "No elevation data available for this route.",
"plain-ascend": "Ascenso llano",
"stats-info": "Start drawing a route to get stats.",
"total-energy": "Energia total",
@ -69,22 +71,27 @@
"layers": {
"add-base": "Añadir capa base",
"add-overlay": "Añadir superposición",
"add-overpass": "Add overpass query",
"custom-layer-name-helptext": "ex: OpenStreetMap",
"custom-layer-name-label": "Custom layer name",
"custom-layer-url-helptext-normal": "URL for normal layers, ex: https://{s}.tile.openstreetmap.org/{z}/{x}/{y}.png",
"custom-layer-url-helptext-overpass": "Overpass Query, ex: nwr[shop]['diet:vegan']['diet:vegan'!=no];",
"custom-layer-url-label": "Custom layer URL/Query",
"customize": "Personalizar capas",
"opacity-slider": "Control deslizante de opacidad",
"placeholder-layer-name": "Nombre de capa personalizada. (ex: OpenStreetMap)",
"placeholder-layer-url": "URL de capa personalizada. (ex: https://{s}.tile.openstreetmap.org/{z}/{x}/{y}.png)",
"overpass-loading-indicator": "Running Overpass API query ...",
"remove-selection": "Eliminar selección"
},
"loadNogos": {
"defaultProperties": "Propiedades por defecto",
"file": "Archivo (.geojson): ",
"file": "File (.geojson)",
"load": "Cargar",
"nogoBuffer": "Buffer de zonas prohibidas (en metros):",
"nogoRadius": "Radio prohibido para puntos (en metros):",
"nogoWeight": "Peso prohibido (-1 significa intransitable):",
"nogoBuffer": "Buffer no-go areas (in meters)",
"nogoRadius": "No-go radius for points (in meters)",
"nogoWeight": "No-go weight (-1 means impassable)",
"source": "Fuente",
"title": "Cargar áreas prohibidas",
"url": "URL: "
"url": "URL"
},
"map": {
"attribution-osm-long": "Colaboradores de OpenStreetMap",
@ -142,6 +149,8 @@
"route-quality-cost": "Codificación de costos",
"route-quality-incline": "Codificación de inclinación",
"route-quality-shortcut": "{{action}} ({{key}} key to toggle)",
"route-tooltip-segment": "Drag to create a new waypoint",
"route-tooltip-waypoint": "Waypoint. Drag to move; Click to remove.",
"strava-biking": "Mostrar segmentos de ciclismo de Strava",
"strava-running": "Mostrar segmentos de carrera de Strava",
"strava-shortcut": "{{action}}\n({{key}} key to toggle layer, click to reload for current area)",
@ -149,8 +158,7 @@
"zoomOutTitle": "Alejarse"
},
"modal": {
"close": "Cerrar"
},
"close": "Cerrar"},
"navbar": {
"about": "Acerca de",
"alternative": {
@ -164,7 +172,7 @@
"load": {
"nogos": "Load no-go areas",
"title": "Cargar",
"tooltip": "{{tracksAction}} ({{tracksKey}} key)\n{{nogosAction}} ({{nogosKey}})",
"tooltip": "{{tracksAction}} ({{tracksKey}} key)\n{{trackAsRouteAction}} ({{trackAsRouteKey}})\n{{nogosAction}} ({{nogosKey}})",
"tracks": "Load tracks"
},
"profile": {
@ -227,6 +235,7 @@
"europe": "Europa",
"europe-monolingual": "Monolingüe Europa",
"overlays": "Superposiciones",
"overpass": "Locations (POIs)",
"worldwide": "Mundial",
"worldwide-international": "Internacional mundial",
"worldwide-monolingual": "Monolingüe mundial"
@ -238,11 +247,15 @@
"optional": "Añadir o eliminar capas opcionales",
"optional-layers": "Más",
"overlay-opacity": "Transparencia de superposición",
"overlay-opacity_plural": "Overlays transparency",
"table": {
"URL": "URL",
"URL": "URL/Query",
"empty": "No hay una capa personalizada configurada todavía.",
"name": "Nombre",
"type": "Tipo"
"type": "Tipo",
"type_layer": "Layer",
"type_overlay": "Overlay",
"type_overpass_query": "Overpass Query"
},
"title": "Capas",
"tooltip": "Select layers"
@ -260,10 +273,11 @@
},
"title": "BRoute web cliente",
"trackasroute": {
"browse": "Browse",
"explainpoi": "(show waypoints as POI's)",
"explaintracklayer": "(show Track as separate Layer)",
"file": "Trackfile",
"fuzziness": "fuzziness",
"fuzziness": "Fuzziness",
"pleasewait": "Please wait!",
"showpois": "POI's",
"title": "Load Track as Route",

View file

@ -15,7 +15,7 @@
"tooltip": "Show more information about BRouter-Web"
},
"credits": {
"boundaries": "Administrative Boundaries: <a href=\"https://osm-boundaries.com\" target=\"_blank\">OSM-Boundaries</a>, <a href=\"https://overpass-api.de/\" target=\"_blank\">Overpass API</a>",
"boundaries": "Administrative Boundaries: <a href=\"https://osm-boundaries.com\" target=\"_blank\">OSM-Boundaries</a>, <a href=\"https://overpass-api.de/\" class=\"overpass-url\" target=\"_blank\">Overpass API</a>",
"brouter": "BRouter",
"brouter-license": "<a target=\"_blank\" href=\"https://brouter.de/brouter\">BRouter</a> &copy; Arndt Brenschede",
"elevation-data": "Elevation data",
@ -25,6 +25,7 @@
"map-tiles": "Map tiles",
"nominatim": "Search by <a href=\"https://wiki.openstreetmap.org/wiki/Nominatim\" target=\"_blank\" data-i18n=\"credits.nominatim\">Nominatim</a>",
"openstreetmap": "&copy; <a target=\"_blank\" href=\"https://www.openstreetmap.org/copyright\" >OpenStreetMap contributors</a> under <a target=\"_blank\" href=\"https://opendatacommons.org/licenses/odbl/\" >ODbL</a>",
"pois": "Locations (POIs): <a href=\"https://overpass-api.de/\" class=\"overpass-url\" target=\"_blank\">Overpass API</a>",
"title": "Credits"
},
"export": {
@ -55,6 +56,7 @@
"mean-cost-factor": "Mean cost factor",
"meter": "meters",
"meter-abbrev": "m",
"no-elevation-data": "No elevation data available for this route.",
"plain-ascend": "Plain ascend",
"stats-info": "Start drawing a route to get stats.",
"total-energy": "Total Energy",
@ -69,22 +71,27 @@
"layers": {
"add-base": "Add base layer",
"add-overlay": "Add overlay",
"add-overpass": "Add overpass query",
"custom-layer-name-helptext": "ex: OpenStreetMap",
"custom-layer-name-label": "Custom layer name",
"custom-layer-url-helptext-normal": "URL for normal layers, ex: https://{s}.tile.openstreetmap.org/{z}/{x}/{y}.png",
"custom-layer-url-helptext-overpass": "Overpass Query, ex: nwr[shop]['diet:vegan']['diet:vegan'!=no];",
"custom-layer-url-label": "Custom layer URL/Query",
"customize": "Customize layers",
"opacity-slider": "Opacity slider",
"placeholder-layer-name": "Custom layer name. (ex: OpenStreetMap)",
"placeholder-layer-url": "Custom layer URL. (ex: https://{s}.tile.openstreetmap.org/{z}/{x}/{y}.png)",
"overpass-loading-indicator": "Running Overpass API query ...",
"remove-selection": "Remove selection"
},
"loadNogos": {
"defaultProperties": "Default properties",
"file": "File (.geojson): ",
"file": "File (.geojson)",
"load": "Load",
"nogoBuffer": "Buffer no-go areas (in meters): ",
"nogoRadius": "No-go radius for points (in meters): ",
"nogoWeight": "No-go weight (-1 means impassable): ",
"nogoBuffer": "Buffer no-go areas (in meters)",
"nogoRadius": "No-go radius for points (in meters)",
"nogoWeight": "No-go weight (-1 means impassable)",
"source": "Source",
"title": "Load no-go areas",
"url": "URL: "
"url": "URL"
},
"map": {
"attribution-osm-long": "OpenStreetMap contributors",
@ -142,6 +149,8 @@
"route-quality-cost": "Cost coding",
"route-quality-incline": "Incline coding",
"route-quality-shortcut": "{{action}} ({{key}} key to toggle)",
"route-tooltip-segment": "Drag to create a new waypoint",
"route-tooltip-waypoint": "Waypoint. Drag to move; Click to remove.",
"strava-biking": "Show Strava biking segments",
"strava-running": "Show Strava running segments",
"strava-shortcut": "{{action}}\n({{key}} key to toggle layer, click to reload for current area)",
@ -149,8 +158,7 @@
"zoomOutTitle": "Zoom out"
},
"modal": {
"close": "Close"
},
"close": "Close"},
"navbar": {
"about": "About",
"alternative": {
@ -164,7 +172,7 @@
"load": {
"nogos": "Load no-go areas",
"title": "Load",
"tooltip": "{{tracksAction}} ({{tracksKey}} key)\n{{nogosAction}} ({{nogosKey}})",
"tooltip": "{{tracksAction}} ({{tracksKey}} key)\n{{trackAsRouteAction}} ({{trackAsRouteKey}})\n{{nogosAction}} ({{nogosKey}})",
"tracks": "Load tracks"
},
"profile": {
@ -227,6 +235,7 @@
"europe": "Europe",
"europe-monolingual": "Europe monolingual",
"overlays": "Overlays",
"overpass": "Locations (POIs)",
"worldwide": "Worldwide",
"worldwide-international": "Worldwide international",
"worldwide-monolingual": "Worldwide monolingual"
@ -238,11 +247,15 @@
"optional": "Add or remove optional layers",
"optional-layers": "More",
"overlay-opacity": "Overlay transparency",
"overlay-opacity_plural": "Overlays transparency",
"table": {
"URL": "URL",
"URL": "URL/Query",
"empty": "No custom layer configured yet.",
"name": "Name",
"type": "Type"
"type": "Type",
"type_layer": "Layer",
"type_overlay": "Overlay",
"type_overpass_query": "Overpass Query"
},
"title": "Layers",
"tooltip": "Select layers"
@ -260,10 +273,11 @@
},
"title": "BRouter web client",
"trackasroute": {
"browse": "Browse",
"explainpoi": "(show waypoints as POI's)",
"explaintracklayer": "(show Track as separate Layer)",
"file": "Trackfile",
"fuzziness": "fuzziness",
"fuzziness": "Fuzziness",
"pleasewait": "Please wait!",
"showpois": "POI's",
"title": "Load Track as Route",

View file

@ -15,7 +15,7 @@
"tooltip": "Afficher plus d'informations à propos de BRouter-Web"
},
"credits": {
"boundaries": "limites administratives: <a href=\"https://osm-boundaries.com\" target=\"_blank\">OSM-Boundaries</a>, <a href=\"https://overpass-api.de/\" target=\"_blank\">Overpass API</a>",
"boundaries": "limites administratives: <a href=\"https://osm-boundaries.com\" target=\"_blank\">OSM-Boundaries</a>, <a href=\"https://overpass-api.de/\" class=\"overpass-url\" target=\"_blank\">Overpass API</a>",
"brouter": "BRouter",
"brouter-license": "<a target=\"_blank\" href=\"https://brouter.de/brouter\">BRouter</a> &copy; Arndt Brenschede",
"elevation-data": "Données d'élévation",
@ -25,6 +25,7 @@
"map-tiles": "Tuiles de carte",
"nominatim": "Recherche par <a href=\"https://wiki.openstreetmap.org/wiki/Nominatim\" target=\"_blank\" data-i18n=\"credits.nominatim\">Nominatim</a>",
"openstreetmap": "&copy; <a target=\"_blank\" href=\"https://www.openstreetmap.org/copyright\" >contributeurs OpenStreetMap</a> sous <a target=\"_blank\" href=\"https://opendatacommons.org/licenses/odbl/\" >ODbL</a>",
"pois": "Lieux (PIs): <a href=\"https://overpass-api.de/\" class=\"overpass-url\" target=\"_blank\">API Overpass</a>",
"title": "Crédits"
},
"export": {
@ -55,8 +56,9 @@
"mean-cost-factor": "Facteur coût moyen",
"meter": "mètres",
"meter-abbrev": "m",
"no-elevation-data": "Aucune donnée d'élévation pour ce parcours.",
"plain-ascend": "faux plat",
"stats-info": "Commencer un itinéraire pour voir ses stats.",
"stats-info": "Tracer un itinéraire pour voir ses stats.",
"total-energy": "Énergie totale",
"travel-time": "Temps de trajet"
},
@ -68,23 +70,28 @@
},
"layers": {
"add-base": "Ajouter un fond de carte ",
"add-overlay": "Ajouter un calque superposable",
"add-overlay": "Ajouter une surcouche",
"add-overpass": "Ajouter une requête overpass",
"custom-layer-name-helptext": "ex: OpenStreetMap",
"custom-layer-name-label": "Nom du calque",
"custom-layer-url-helptext-normal": "URL du calque, ex: https://{s}.tile.openstreetmap.org/{z}/{x}/{y}.png",
"custom-layer-url-helptext-overpass": "Requête Overpass, ex : nwr[shop]['diet:vegan']['diet:vegan'!=no];",
"custom-layer-url-label": "URL ou requête du calque",
"customize": "Personnaliser les calques",
"opacity-slider": "Curseur d'opacité",
"placeholder-layer-name": "Nom du calque (p. ex. OpenStreetMap).",
"placeholder-layer-url": "URL du calque (p. ex. https://{s}.tile.openstreetmap.org/{z}/{x}/{y}.png).",
"overpass-loading-indicator": "Exécution de la requête Overpass",
"remove-selection": "Supprimer la sélection"
},
"loadNogos": {
"defaultProperties": "Propriétés par défaut",
"file": "Fichier (.geojson)",
"load": "Charger",
"nogoBuffer": "Tampon des zones interdites (en mètres):",
"nogoRadius": "Rayon des zones interdites pour les points (en mètres):",
"nogoBuffer": "Tampon des zones interdites (en mètres)",
"nogoRadius": "Rayon des zones interdites pour les points (en mètres)",
"nogoWeight": "Poids des zones interdites (-1 signifie infranchissable)",
"source": "Source",
"title": "Charger les zones interdites",
"url": "URL:"
"url": "URL"
},
"map": {
"attribution-osm-long": "Contributeurs OpenStreetMap",
@ -142,6 +149,8 @@
"route-quality-cost": "Chiffrage du coût",
"route-quality-incline": "Chiffrage d'inclinaison",
"route-quality-shortcut": "{{action}} (touche {{key}} pour basculer)",
"route-tooltip-segment": "Laisser appuyer et déplacer pour ajouter un nouveau point de passage",
"route-tooltip-waypoint": "Point de passage. Laisser appuyer pour déplacer; cliquer pour supprimer.",
"strava-biking": "Afficher les segments Strava vélo",
"strava-running": "Afficher les segments Strava à pied",
"strava-shortcut": "{{action}}\n(touche {{key}} pour basculer de calque, cliquer pour recharger la zone actuelle)",
@ -149,8 +158,7 @@
"zoomOutTitle": "Dézoomer"
},
"modal": {
"close": "Fermer"
},
"close": "Fermer"},
"navbar": {
"about": "À propos",
"alternative": {
@ -164,7 +172,7 @@
"load": {
"nogos": "Charger des zones interdites",
"title": "Charger",
"tooltip": "{{tracksAction}} (touche {{tracksKey}} )\n{{nogosAction}} ({{nogosKey}})",
"tooltip": "{{tracksAction}} (touche {{tracksKey}})\n{{trackAsRouteAction}} ({{trackAsRouteKey}})\n{{nogosAction}} ({{nogosKey}})",
"tracks": "Charger des traces"
},
"profile": {
@ -226,7 +234,8 @@
"country": "Pays",
"europe": "Europe",
"europe-monolingual": "Europe monolingue",
"overlays": "Calques superposables",
"overlays": "Surcouches",
"overpass": "Lieux (PIs)",
"worldwide": "Mondial",
"worldwide-international": "Mondial international",
"worldwide-monolingual": "Mondial monolingue"
@ -240,10 +249,13 @@
"overlay-opacity": "Transparence de la surcouche",
"overlay-opacity_plural": "Transparence des surcouches",
"table": {
"URL": "URL",
"URL": "URL/Requête",
"empty": "Aucun calque personnel trouvé.",
"name": "Nom",
"type": "Type"
"type": "Type",
"type_layer": "Calque",
"type_overlay": "Surcouche",
"type_overpass_query": "Requête Overpass"
},
"title": "Calques",
"tooltip": "Sélection des calques"
@ -261,10 +273,11 @@
},
"title": "Client web BRouter",
"trackasroute": {
"browse": "Parcourir",
"explainpoi": "(afficher les points de passage comme des PIs)",
"explaintracklayer": "(afficher la piste comme un calque distinct)",
"file": "Fichier de piste",
"fuzziness": "flou",
"fuzziness": "Lissage",
"pleasewait": "Merci de patienter !",
"showpois": "PIs",
"title": "Charger la trace comme itinéraire",

View file

@ -15,7 +15,7 @@
"tooltip": "Show more information about BRouter-Web"
},
"credits": {
"boundaries": "Administrative Boundaries: <a href=\"https://osm-boundaries.com\" target=\"_blank\">OSM-Boundaries</a>, <a href=\"https://overpass-api.de/\" target=\"_blank\">Overpass API</a>",
"boundaries": "Administrative Boundaries: <a href=\"https://osm-boundaries.com\" target=\"_blank\">OSM-Boundaries</a>, <a href=\"https://overpass-api.de/\" class=\"overpass-url\" target=\"_blank\">Overpass API</a>",
"brouter": "BRouter",
"brouter-license": "<a target=\"_blank\" href=\"https://brouter.de/brouter\">BRouter</a> &copy; Arndt Brenschede",
"elevation-data": "Elevation data",
@ -25,6 +25,7 @@
"map-tiles": "Map tiles",
"nominatim": "Search by <a href=\"https://wiki.openstreetmap.org/wiki/Nominatim\" target=\"_blank\" data-i18n=\"credits.nominatim\">Nominatim</a>",
"openstreetmap": "&copy; <a target=\"_blank\" href=\"https://www.openstreetmap.org/copyright\" >OpenStreetMap contributors</a> under <a target=\"_blank\" href=\"https://opendatacommons.org/licenses/odbl/\" >ODbL</a>",
"pois": "Locations (POIs): <a href=\"https://overpass-api.de/\" class=\"overpass-url\" target=\"_blank\">Overpass API</a>",
"title": "Credits"
},
"export": {
@ -55,6 +56,7 @@
"mean-cost-factor": "Mean cost factor",
"meter": "meters",
"meter-abbrev": "m",
"no-elevation-data": "No elevation data available for this route.",
"plain-ascend": "Plain ascend",
"stats-info": "Start drawing a route to get stats.",
"total-energy": "Total Energy",
@ -69,22 +71,27 @@
"layers": {
"add-base": "Add base layer",
"add-overlay": "Add overlay",
"add-overpass": "Add overpass query",
"custom-layer-name-helptext": "ex: OpenStreetMap",
"custom-layer-name-label": "Custom layer name",
"custom-layer-url-helptext-normal": "URL for normal layers, ex: https://{s}.tile.openstreetmap.org/{z}/{x}/{y}.png",
"custom-layer-url-helptext-overpass": "Overpass Query, ex: nwr[shop]['diet:vegan']['diet:vegan'!=no];",
"custom-layer-url-label": "Custom layer URL/Query",
"customize": "Customize layers",
"opacity-slider": "Opacity slider",
"placeholder-layer-name": "Custom layer name. (ex: OpenStreetMap)",
"placeholder-layer-url": "Custom layer URL. (ex: https://{s}.tile.openstreetmap.org/{z}/{x}/{y}.png)",
"overpass-loading-indicator": "Running Overpass API query ...",
"remove-selection": "Remove selection"
},
"loadNogos": {
"defaultProperties": "Default properties",
"file": "File (.geojson): ",
"file": "File (.geojson)",
"load": "Load",
"nogoBuffer": "Buffer no-go areas (in meters): ",
"nogoRadius": "No-go radius for points (in meters): ",
"nogoWeight": "No-go weight (-1 means impassable): ",
"nogoBuffer": "Buffer no-go areas (in meters)",
"nogoRadius": "No-go radius for points (in meters)",
"nogoWeight": "No-go weight (-1 means impassable)",
"source": "Source",
"title": "Load no-go areas",
"url": "URL: "
"url": "URL"
},
"map": {
"attribution-osm-long": "OpenStreetMap contributors",
@ -142,6 +149,8 @@
"route-quality-cost": "Cost coding",
"route-quality-incline": "Incline coding",
"route-quality-shortcut": "{{action}} ({{key}} key to toggle)",
"route-tooltip-segment": "Drag to create a new waypoint",
"route-tooltip-waypoint": "Waypoint. Drag to move; Click to remove.",
"strava-biking": "Show Strava biking segments",
"strava-running": "Show Strava running segments",
"strava-shortcut": "{{action}}\n({{key}} key to toggle layer, click to reload for current area)",
@ -149,8 +158,7 @@
"zoomOutTitle": "Zoom out"
},
"modal": {
"close": "Close"
},
"close": "Close"},
"navbar": {
"about": "About",
"alternative": {
@ -164,7 +172,7 @@
"load": {
"nogos": "Load no-go areas",
"title": "Load",
"tooltip": "{{tracksAction}} ({{tracksKey}} key)\n{{nogosAction}} ({{nogosKey}})",
"tooltip": "{{tracksAction}} ({{tracksKey}} key)\n{{trackAsRouteAction}} ({{trackAsRouteKey}})\n{{nogosAction}} ({{nogosKey}})",
"tracks": "Load tracks"
},
"profile": {
@ -227,6 +235,7 @@
"europe": "Europe",
"europe-monolingual": "Europe monolingual",
"overlays": "Overlays",
"overpass": "Locations (POIs)",
"worldwide": "Worldwide",
"worldwide-international": "Worldwide international",
"worldwide-monolingual": "Worldwide monolingual"
@ -238,11 +247,15 @@
"optional": "Add or remove optional layers",
"optional-layers": "More",
"overlay-opacity": "Overlay transparency",
"overlay-opacity_plural": "Overlays transparency",
"table": {
"URL": "URL",
"URL": "URL/Query",
"empty": "No custom layer configured yet.",
"name": "Name",
"type": "Type"
"type": "Type",
"type_layer": "Layer",
"type_overlay": "Overlay",
"type_overpass_query": "Overpass Query"
},
"title": "Layers",
"tooltip": "Select layers"
@ -260,10 +273,11 @@
},
"title": "BRouter web client",
"trackasroute": {
"browse": "Browse",
"explainpoi": "(show waypoints as POI's)",
"explaintracklayer": "(show Track as separate Layer)",
"file": "Trackfile",
"fuzziness": "fuzziness",
"fuzziness": "Fuzziness",
"pleasewait": "Please wait!",
"showpois": "POI's",
"title": "Load Track as Route",

View file

@ -15,7 +15,7 @@
"tooltip": "További információk megjelenítése a BRouter-Webről"
},
"credits": {
"boundaries": "Administrative Boundaries: <a href=\"https://osm-boundaries.com\" target=\"_blank\">OSM-Boundaries</a>, <a href=\"https://overpass-api.de/\" target=\"_blank\">Overpass API</a>",
"boundaries": "Közigazgatási határok: <a href=\"https://osm-boundaries.com\" target=\"_blank\">OSM-határok</a>, <a href=\"https://overpass-api.de/\" class=\"overpass-url\" target=\"_blank\">Overpass API</a>",
"brouter": "BRouter",
"brouter-license": "<a target=\"_blank\" href=\"https://brouter.de/brouter\">BRouter</a> &copy; Arndt Brenschede",
"elevation-data": "Magassági adatok",
@ -25,7 +25,8 @@
"map-tiles": "Map tiles",
"nominatim": "Keresés: <a href=\"https://wiki.openstreetmap.org/wiki/Nominatim\" target=\"_blank\" data-i18n=\"credits.nominatim\">Nominatim</a>",
"openstreetmap": "&copy; <a target=\"_blank\" href=\"https://www.openstreetmap.org/copyright\" >OpenStreetMap közreműködők</a>, <a target=\"_blank\" href=\"https://opendatacommons.org/licenses/odbl/\" >ODbL</a> licenc szerint",
"title": "Credits"
"pois": "Locations (POIs): <a href=\"https://overpass-api.de/\" class=\"overpass-url\" target=\"_blank\">Overpass API</a>",
"title": "Alkotók"
},
"export": {
"format": "Formátum",
@ -55,6 +56,7 @@
"mean-cost-factor": "Közepes ráfordítástényező",
"meter": "méter",
"meter-abbrev": "m",
"no-elevation-data": "Ehhez az útvonalhoz nincsenek magassági adatok.",
"plain-ascend": "Végpontok közötti szintkülönbség",
"stats-info": "A statisztika megtekintéséhez kezdjen el egy útvonalat rajzolni.",
"total-energy": "Teljes energiafelhasználás",
@ -69,22 +71,27 @@
"layers": {
"add-base": "Alapréteg hozzáadása",
"add-overlay": "Rátétréteg hozzáadása",
"add-overpass": "Overpass-lekérdezés hozzáadása",
"custom-layer-name-helptext": "ex: OpenStreetMap",
"custom-layer-name-label": "Egyéni réteg neve",
"custom-layer-url-helptext-normal": "URL for normal layers, ex: https://{s}.tile.openstreetmap.org/{z}/{x}/{y}.png",
"custom-layer-url-helptext-overpass": "Overpass Query, ex: nwr[shop]['diet:vegan']['diet:vegan'!=no];",
"custom-layer-url-label": "Egyéni réteg URL-je/lekérdezése",
"customize": "Rétegek személyre szabása",
"opacity-slider": "Átlátszósági csúszka",
"placeholder-layer-name": "Egyedi rétegnév (pl. OpenStreetMap)",
"placeholder-layer-url": "Egyedi réteg URL-je (pl. https://{s}.tile.openstreetmap.org/{z}/{x}/{y}.png)",
"overpass-loading-indicator": "Overpass API-lekérdezés futtatása…",
"remove-selection": "Kijelölés eltávolítása"
},
"loadNogos": {
"defaultProperties": "Alapértelmezett tulajdonságok",
"file": "Fájl (.geojson):",
"file": "Fájl (.geojson)",
"load": "Betöltés",
"nogoBuffer": "Elkerülendő területek körüli távolság (méter)",
"nogoRadius": "Elkerülendő pontok körüli sugár (méter):",
"nogoWeight": "Elkerülendő területek súlyozása (-1 = áthatolhatatlan):",
"nogoBuffer": "Buffer no-go areas (in meters)",
"nogoRadius": "No-go radius for points (in meters)",
"nogoWeight": "No-go weight (-1 means impassable)",
"source": "Forrás",
"title": "Elkerülendő területek betöltése",
"url": "URL:"
"url": "URL"
},
"map": {
"attribution-osm-long": "OpenStreetMap közreműködők",
@ -96,8 +103,8 @@
"delete-nogo-areas": "Minden elkerülendő terület törlése",
"delete-pois": "Minden érdekes pont (POI) törlése",
"delete-route": "Útvonal törlése",
"draw-circlego-start": "Draw limited go-to zone",
"draw-circlego-stop": "Stop drawing limited go-to zone",
"draw-circlego-start": "Korlátozott elkerülendő terület rajzolása",
"draw-circlego-stop": "Korlátozott elkerülendő terület rajzolásának megszakítása",
"draw-poi-start": "Érdekes pontok (POI-k) rajzolása",
"draw-poi-stop": "Érdekes pontok rajzolásának megszakítása",
"draw-route-start": "Útvonal rajzolása",
@ -132,7 +139,7 @@
"edit": "Szerkesztés kattintással",
"help": "&square; = áthelyezés / átméretezés, <span class=\"fa fa-trash-o\"></span> = törlés,<br>a szerkesztés befejezéséhez kattintson a körre"
},
"not-applicable-here": "not applicable here",
"not-applicable-here": "itt nem alkalmazható",
"opacity-slider": "Útvonal és jelölők átlátszóságának beállítása",
"opacity-slider-shortcut": "{{action}}\n(Időszakos elnémítás a {{key}} billentyűt lenyomva tartásával)",
"preview": "Előnézet",
@ -142,6 +149,8 @@
"route-quality-cost": "Ráfordítás kódolása",
"route-quality-incline": "Lejtés kódolása",
"route-quality-shortcut": "{{action}} (be-/kikapcsolás: {{key}} billentyű)",
"route-tooltip-segment": "Húzza el új útpont létrehozásához",
"route-tooltip-waypoint": "Útpont: mozgatáshoz húzza el, eltávolításhoz kattintson rá.",
"strava-biking": "Strava motoros útvonalszakaszok megjelenítése",
"strava-running": "Strava futó útvonalszakaszok megjelenítése",
"strava-shortcut": "{{action}}\n({{key}} billentyű a réteg be-/kikapcsolásához, kattintás az adott terület újratöltéséhez)",
@ -149,8 +158,7 @@
"zoomOutTitle": "Kicsinyítés"
},
"modal": {
"close": "Bezárás"
},
"close": "Bezárás"},
"navbar": {
"about": "Névjegy",
"alternative": {
@ -164,7 +172,7 @@
"load": {
"nogos": "Elkerülendő területek betöltése",
"title": "Betöltés",
"tooltip": "{{tracksAction}} ({{tracksKey}} billentyű)\n{{nogosAction}} ({{nogosKey}})",
"tooltip": "{{tracksAction}} ({{tracksKey}} billentyű)\n{{trackAsRouteAction}} ({{trackAsRouteKey}})\n{{nogosAction}} ({{nogosKey}})",
"tracks": "Nyomvonalak betöltése"
},
"profile": {
@ -227,6 +235,7 @@
"europe": "Európa",
"europe-monolingual": "Európa (egynyelvű)",
"overlays": "Rátétrétegek",
"overpass": "Locations (POIs)",
"worldwide": "Világ",
"worldwide-international": "Világ (nemzetközi)",
"worldwide-monolingual": "Világ (egynyelvű)"
@ -238,11 +247,15 @@
"optional": "Rétegek hozzáadása vagy eltávolítása",
"optional-layers": "Több",
"overlay-opacity": "Rátétréteg átlászósága",
"overlay-opacity_plural": "Rátétrétegek átlátszósága",
"table": {
"URL": "URL",
"URL": "URL/lekérdezés",
"empty": "Még nincs beállítva egyedi réteg",
"name": "Név",
"type": "Típus"
"type": "Típus",
"type_layer": "Réteg",
"type_overlay": "Rátétréteg",
"type_overpass_query": "Overpass-lekérdezés"
},
"title": "Rétegek",
"tooltip": "Rétegek kijelölése"
@ -260,10 +273,11 @@
},
"title": "BRouter webkliens",
"trackasroute": {
"browse": "Böngészése",
"explainpoi": "(útpontok megjelenítése érdekes pontként [POI-ként])",
"explaintracklayer": "(nyomvonal megjelenítés különálló rétegként)",
"file": "Nyomvonalfájl",
"fuzziness": "homályosság",
"fuzziness": "Fuzziness",
"pleasewait": "Kérjük, várjon",
"showpois": "Érdekes pontok (POI-k)",
"title": "Nyomvonal betöltése útvonalként",
@ -283,7 +297,7 @@
"upload-error": "Feltöltési hiba: {{error}}"
},
"whatsnew": {
"new-version": "A new version was released since your last visit. Click <a href='.' data-toggle='modal' data-target='#whatsnew'>here</a> to see what's new!",
"title": "What's new?"
"new-version": "Legutóbbi látogatása óta megjelent egy új verzió. <a href='.' data-toggle='modal' data-target='#whatsnew'>Kattintson ide</a>, és nézze meg az újdonságokat!",
"title": "Újdonságok"
}
}

View file

@ -15,7 +15,7 @@
"tooltip": "Show more information about BRouter-Web"
},
"credits": {
"boundaries": "Administrative Boundaries: <a href=\"https://osm-boundaries.com\" target=\"_blank\">OSM-Boundaries</a>, <a href=\"https://overpass-api.de/\" target=\"_blank\">Overpass API</a>",
"boundaries": "Administrative Boundaries: <a href=\"https://osm-boundaries.com\" target=\"_blank\">OSM-Boundaries</a>, <a href=\"https://overpass-api.de/\" class=\"overpass-url\" target=\"_blank\">Overpass API</a>",
"brouter": "BRouter",
"brouter-license": "<a target=\"_blank\" href=\"https://brouter.de/brouter\">BRouter</a> &copy; Arndt Brenschede",
"elevation-data": "Hæðargögn",
@ -25,6 +25,7 @@
"map-tiles": "Kortatíglar",
"nominatim": "Leita eftir <a href=\"https://wiki.openstreetmap.org/wiki/Nominatim\" target=\"_blank\" data-i18n=\"credits.nominatim\">Nominatim</a>",
"openstreetmap": "&copy; <a target=\"_blank\" href=\"https://www.openstreetmap.org/copyright\" >OpenStreetMap þátttakendur</a> með <a target=\"_blank\" href=\"https://opendatacommons.org/licenses/odbl/\" >ODbL</a>",
"pois": "Locations (POIs): <a href=\"https://overpass-api.de/\" class=\"overpass-url\" target=\"_blank\">Overpass API</a>",
"title": "Credits"
},
"export": {
@ -55,6 +56,7 @@
"mean-cost-factor": "Meðal-kostnaðarstuðull",
"meter": "metrar",
"meter-abbrev": "m",
"no-elevation-data": "No elevation data available for this route.",
"plain-ascend": "Einföld hækkun (hæðarmunur)",
"stats-info": "Start drawing a route to get stats.",
"total-energy": "Orka alls",
@ -69,22 +71,27 @@
"layers": {
"add-base": "Bæta við grunnlagi",
"add-overlay": "Bæta við þekjulagi",
"add-overpass": "Add overpass query",
"custom-layer-name-helptext": "ex: OpenStreetMap",
"custom-layer-name-label": "Custom layer name",
"custom-layer-url-helptext-normal": "URL for normal layers, ex: https://{s}.tile.openstreetmap.org/{z}/{x}/{y}.png",
"custom-layer-url-helptext-overpass": "Overpass Query, ex: nwr[shop]['diet:vegan']['diet:vegan'!=no];",
"custom-layer-url-label": "Custom layer URL/Query",
"customize": "Sérsníða lög",
"opacity-slider": "Ógegnsæissleði",
"placeholder-layer-name": "Heiti sérsniðins lags. (t.d: OpenStreetMap)",
"placeholder-layer-url": "URL-slóð sérsniðins lags. (t.d: https://{s}.tile.openstreetmap.org/{z}/{x}/{y}.png)",
"overpass-loading-indicator": "Running Overpass API query ...",
"remove-selection": "Fjarlægja valið"
},
"loadNogos": {
"defaultProperties": "Sjálfgefnir eiginleikar",
"file": "Skrá (.geojson): ",
"file": "File (.geojson)",
"load": "Hlaða",
"nogoBuffer": "Útjaðar bannsvæða (í metrum):",
"nogoRadius": "Radíus bannsvæða í kringum punkt (í metrum):",
"nogoWeight": "Mikilvægi bannsvæðis (-1 þýðir ófært): ",
"nogoBuffer": "Buffer no-go areas (in meters)",
"nogoRadius": "No-go radius for points (in meters)",
"nogoWeight": "No-go weight (-1 means impassable)",
"source": "Uppruni",
"title": "Hlaða inn bannsvæðum",
"url": "Slóð:"
"url": "URL"
},
"map": {
"attribution-osm-long": "OpenStreetMap þátttakendurnir",
@ -142,6 +149,8 @@
"route-quality-cost": "Kóði fyrir kostnað",
"route-quality-incline": "Kóði fyrir halla",
"route-quality-shortcut": "{{action}} ({{key}} key to toggle)",
"route-tooltip-segment": "Drag to create a new waypoint",
"route-tooltip-waypoint": "Waypoint. Drag to move; Click to remove.",
"strava-biking": "Sýna Strava hjólabúta",
"strava-running": "Sýna Strava hlaupabúta",
"strava-shortcut": "{{action}}\n({{key}} key to toggle layer, click to reload for current area)",
@ -149,8 +158,7 @@
"zoomOutTitle": "Renna frá"
},
"modal": {
"close": "Loka"
},
"close": "Loka"},
"navbar": {
"about": "Um hugbúnaðinn",
"alternative": {
@ -164,7 +172,7 @@
"load": {
"nogos": "Hlaða inn bannsvæðum",
"title": "Hlaða",
"tooltip": "{{tracksAction}} ({{tracksKey}} key)\n{{nogosAction}} ({{nogosKey}})",
"tooltip": "{{tracksAction}} ({{tracksKey}} key)\n{{trackAsRouteAction}} ({{trackAsRouteKey}})\n{{nogosAction}} ({{nogosKey}})",
"tracks": "Load tracks"
},
"profile": {
@ -227,6 +235,7 @@
"europe": "Evrópa",
"europe-monolingual": "Eitt tungumál í Evrópu",
"overlays": "Þekjulög (yfirlög)",
"overpass": "Locations (POIs)",
"worldwide": "Á heimsvísu",
"worldwide-international": "Alþjóðlegt á heimsvísu",
"worldwide-monolingual": "Eitt tungumál á heimsvísu"
@ -238,11 +247,15 @@
"optional": "Bæta við eða fjarlægja valkvæð lög",
"optional-layers": "Meira",
"overlay-opacity": "Gegnsæi þekjulags",
"overlay-opacity_plural": "Overlays transparency",
"table": {
"URL": "Slóð",
"URL": "URL/Query",
"empty": "Ekkert sérsniðið lag ennþá uppsett.",
"name": "Nafn",
"type": "Tegund"
"type": "Tegund",
"type_layer": "Layer",
"type_overlay": "Overlay",
"type_overpass_query": "Overpass Query"
},
"title": "Lög",
"tooltip": "Select layers"
@ -260,10 +273,11 @@
},
"title": "BRouter vefforrit",
"trackasroute": {
"browse": "Browse",
"explainpoi": "(show waypoints as POI's)",
"explaintracklayer": "(show Track as separate Layer)",
"file": "Trackfile",
"fuzziness": "fuzziness",
"fuzziness": "Fuzziness",
"pleasewait": "Please wait!",
"showpois": "POI's",
"title": "Load Track as Route",

Some files were not shown because too many files have changed in this diff Show more