CINXE.COM
OpenStreetBrowser
<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title>OpenStreetBrowser</title> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <link rel="manifest" href="manifest1.json" /> <link rel="icon" type="image/png" href="img/osb-192.png" /> <link rel="stylesheet" href="node_modules/leaflet/dist/leaflet.css" /> <link rel="stylesheet" href="node_modules/@fortawesome/fontawesome-free/css/all.min.css" /> <link rel="stylesheet" href="node_modules/@fortawesome/fontawesome-free/css/v4-shims.min.css" /> <link rel="stylesheet" href="node_modules/leaflet-geosearch/assets/css/leaflet.css" /> <link rel="stylesheet" href="node_modules/leaflet.locatecontrol/dist/L.Control.Locate.min.css" /> <link rel="stylesheet" href="node_modules/leaflet.polylinemeasure/Leaflet.PolylineMeasure.css" /> <script src="node_modules/leaflet/dist/leaflet.js"></script> <script src="node_modules/leaflet.locatecontrol/dist/L.Control.Locate.min.js"></script> <script src="node_modules/leaflet-textpath/leaflet.textpath.js"></script> <script src="node_modules/leaflet-polylineoffset/leaflet.polylineoffset.js"></script> <script src="node_modules/leaflet.polylinemeasure/Leaflet.PolylineMeasure.js"></script> <script src="node_modules/leaflet-polylinedecorator/dist/leaflet.polylineDecorator.js"></script> <script type='text/javascript'> var modulekit={"modules":{"openstreetbrowser":{"path":"","id":"openstreetbrowser","version":"5.4","depend":["hooks","html","modulekit-lang","modulekit-form","modulekit-ajax","openstreetbrowser-categories-main","openstreetmap-tag-translations"],"include":{"php":["src\/defaults.php","src\/database.php","src\/options.php","src\/language.php","src\/ip-location.php","src\/wikidata.php","src\/wikipedia.php","src\/ImageLoader.php","src\/RepositoryBase.php","src\/RepositoryDir.php","src\/RepositoryGit.php","src\/repositories.php","src\/repositoriesGitea.php","src\/customCategory.php"],"css":["style.css"]},"version_build":"git.b0052270","modules_path":["modules","lib\/modulekit","modulekit","node_modules"],"aliases":["","openstreetbrowser"]},"modulekit-ajax":{"path":"lib\/modulekit\/ajax\/","name":"AJAX","id":"modulekit-ajax","depend":[],"include_php":["inc\/ajax.php"],"include_js":["inc\/ajax.js"],"include_css":[],"version_build":"git.4dec2cc","version":"","modules_path":["modules","lib\/modulekit","modulekit","node_modules"],"include":{"php":["inc\/ajax.php"],"js":["inc\/ajax.js"],"css":[]},"aliases":["ajax","modulekit-ajax"]},"modulekit-base":{"path":"lib\/modulekit\/base\/","name":"Modulekit - Basic extensions","id":"modulekit-base","include_php":[],"include_js":[],"modules_path":"","version_build":"git.f328a01","version":"","include":{"php":[],"js":[],"css":[]},"aliases":["base","modulekit-base"]},"json_readable_encode":{"path":"lib\/modulekit\/base\/\/json_readable_encode\/","id":"json_readable_encode","include":{"php":["json_readable_encode.php"],"js":["json_readable_encode.js"]},"version_build":"git.f328a01","version":"","modules_path":["modules","lib\/modulekit","modulekit","node_modules"],"aliases":["json_readable_encode"]},"opt_sort":{"path":"lib\/modulekit\/base\/\/opt_sort\/","id":"opt_sort","include":{"php":["opt_sort.php"],"js":["opt_sort.js"]},"version_build":"git.f328a01","version":"","modules_path":["modules","lib\/modulekit","modulekit","node_modules"],"aliases":["opt_sort"]},"csrf":{"path":"lib\/modulekit\/base\/\/csrf\/","id":"csrf","include":{"php":["code.php"]},"version_build":"git.f328a01","version":"","modules_path":["modules","lib\/modulekit","modulekit","node_modules"],"aliases":["csrf"]},"shell_escape":{"path":"lib\/modulekit\/base\/\/shell_escape\/","id":"shell_escape","include":{"php":["code.php"]},"version_build":"git.f328a01","version":"","modules_path":["modules","lib\/modulekit","modulekit","node_modules"],"aliases":["shell_escape"]},"str_to_id":{"path":"lib\/modulekit\/base\/\/str_to_id\/","id":"str_to_id","include":{"php":["str_to_id.php"],"js":["str_to_id.js"]},"version_build":"git.f328a01","version":"","modules_path":["modules","lib\/modulekit","modulekit","node_modules"],"aliases":["str_to_id"]},"sprintf":{"path":"lib\/modulekit\/base\/\/sprintf\/","include":{"js":["sprintf.js","vsprintf.js"]},"id":"sprintf","version_build":"git.f328a01","version":"","modules_path":["modules","lib\/modulekit","modulekit","node_modules"],"aliases":["sprintf"]},"html":{"path":"lib\/modulekit\/base\/\/html\/","id":"html","depend":["weight_sort"],"include":{"php":["functions.php"]},"version_build":"git.f328a01","version":"","modules_path":["modules","lib\/modulekit","modulekit","node_modules"],"aliases":["html"]},"weight_sort":{"path":"lib\/modulekit\/base\/\/weight_sort\/","id":"weight_sort","include":{"php":["weight_sort.php"],"js":["weight_sort.js"]},"version_build":"git.f328a01","version":"","modules_path":["modules","lib\/modulekit","modulekit","node_modules"],"aliases":["weight_sort"]},"messages":{"path":"lib\/modulekit\/base\/\/messages\/","include":{"php":["messages.php"],"js":["messages.js"],"css":["style.css"]},"id":"messages","version_build":"git.f328a01","version":"","modules_path":["modules","lib\/modulekit","modulekit","node_modules"],"aliases":["messages"]},"hooks":{"path":"lib\/modulekit\/base\/\/hooks\/","id":"hooks","include":{"php":["hooks.php"],"js":["hooks.js"],"mcp":["hooks.php"],"backend":["hooks.php"]},"version_build":"git.f328a01","version":"","modules_path":["modules","lib\/modulekit","modulekit","node_modules"],"aliases":["hooks"]},"page":{"path":"lib\/modulekit\/base\/\/page\/","include":{"php":["code.php"],"js":["code.js"]},"id":"page","version_build":"git.f328a01","version":"","modules_path":["modules","lib\/modulekit","modulekit","node_modules"],"aliases":["page"]},"resize_listener":{"path":"lib\/modulekit\/base\/\/resize_listener\/","id":"resize_listener","include":{"js":["code.js"]},"version_build":"git.f328a01","version":"","modules_path":["modules","lib\/modulekit","modulekit","node_modules"],"aliases":["resize_listener"]},"options":{"path":"lib\/modulekit\/base\/\/options\/","id":"options","depend":["hooks"],"include":{"js":["options.js"]},"version_build":"git.f328a01","version":"","modules_path":["modules","lib\/modulekit","modulekit","node_modules"],"aliases":["options"]},"modulekit-form":{"path":"lib\/modulekit\/form\/","name":"Form","id":"modulekit-form","version":"2.0.0-alpha","depend":["lang","calendar","date","hooks","json_readable_encode","weight_sort"],"include_php":["inc\/form.php","inc\/functions.php","inc\/form_element.php","inc\/form_element_array.php","inc\/form_element_form_chooser.php","inc\/form_element_form.php","inc\/form_element_hash.php","inc\/form_element_checkbox.php","inc\/form_element_radio.php","inc\/form_element_text.php","inc\/form_element_textarea.php","inc\/form_element_boolean.php","inc\/form_element_color.php","inc\/form_element_password.php","inc\/form_element_keywords.php","inc\/form_element_json.php","inc\/form_element_unsupported.php","inc\/form_element_select.php","inc\/form_element_select_other.php","inc\/form_element_numeric.php","inc\/form_element_file.php","inc\/form_element_date.php","inc\/form_element_label.php","inc\/form_element_autocomplete.php","inc\/form_element_display.php","inc\/form_element_hidden.php","inc\/form_element_intermediate_text.php","inc\/form_element_switch.php","inc\/form_element_fixed.php"],"include_js":["inc\/functions.js","inc\/form.js","inc\/form_element.js","inc\/form_element_array.js","inc\/form_element_form_chooser.js","inc\/form_element_form.js","inc\/form_element_hash.js","inc\/form_element_text.js","inc\/form_element_textarea.js","inc\/form_element_boolean.js","inc\/form_element_radio.js","inc\/form_element_checkbox.js","inc\/form_element_color.js","inc\/form_element_password.js","inc\/form_element_keywords.js","inc\/form_element_json.js","inc\/form_element_unsupported.js","inc\/form_element_select.js","inc\/form_element_select_other.js","inc\/form_element_numeric.js","inc\/form_element_file.js","inc\/form_element_date.js","inc\/form_element_label.js","inc\/form_element_autocomplete.js","inc\/form_element_display.js","inc\/form_element_hidden.js","inc\/form_element_intermediate_text.js","inc\/form_element_switch.js","inc\/form_element_fixed.js"],"include_css":["inc\/form.css","inc\/form_element.css","inc\/form_element_text.css","inc\/form_element_array.css","inc\/form_element_form_chooser.css","inc\/form_element_form.css","inc\/form_element_keywords.css","inc\/form_element_textarea.css","inc\/form_element_select.css","inc\/form_element_autocomplete.css","inc\/form_element_file.css","inc\/theme.css"],"languages":["en","de"],"version_build":"git.557a82f","modules_path":["modules","lib\/modulekit","modulekit","node_modules"],"include":{"php":["inc\/form.php","inc\/functions.php","inc\/form_element.php","inc\/form_element_array.php","inc\/form_element_form_chooser.php","inc\/form_element_form.php","inc\/form_element_hash.php","inc\/form_element_checkbox.php","inc\/form_element_radio.php","inc\/form_element_text.php","inc\/form_element_textarea.php","inc\/form_element_boolean.php","inc\/form_element_color.php","inc\/form_element_password.php","inc\/form_element_keywords.php","inc\/form_element_json.php","inc\/form_element_unsupported.php","inc\/form_element_select.php","inc\/form_element_select_other.php","inc\/form_element_numeric.php","inc\/form_element_file.php","inc\/form_element_date.php","inc\/form_element_label.php","inc\/form_element_autocomplete.php","inc\/form_element_display.php","inc\/form_element_hidden.php","inc\/form_element_intermediate_text.php","inc\/form_element_switch.php","inc\/form_element_fixed.php"],"js":["inc\/functions.js","inc\/form.js","inc\/form_element.js","inc\/form_element_array.js","inc\/form_element_form_chooser.js","inc\/form_element_form.js","inc\/form_element_hash.js","inc\/form_element_text.js","inc\/form_element_textarea.js","inc\/form_element_boolean.js","inc\/form_element_radio.js","inc\/form_element_checkbox.js","inc\/form_element_color.js","inc\/form_element_password.js","inc\/form_element_keywords.js","inc\/form_element_json.js","inc\/form_element_unsupported.js","inc\/form_element_select.js","inc\/form_element_select_other.js","inc\/form_element_numeric.js","inc\/form_element_file.js","inc\/form_element_date.js","inc\/form_element_label.js","inc\/form_element_autocomplete.js","inc\/form_element_display.js","inc\/form_element_hidden.js","inc\/form_element_intermediate_text.js","inc\/form_element_switch.js","inc\/form_element_fixed.js"],"css":["inc\/form.css","inc\/form_element.css","inc\/form_element_text.css","inc\/form_element_array.css","inc\/form_element_form_chooser.css","inc\/form_element_form.css","inc\/form_element_keywords.css","inc\/form_element_textarea.css","inc\/form_element_select.css","inc\/form_element_autocomplete.css","inc\/form_element_file.css","inc\/theme.css"]},"aliases":["form","modulekit-form"]},"modulekit-form-debug":{"path":"lib\/modulekit\/form\/modules\/debug\/","id":"modulekit-form-debug","include":{"js":["code.js"],"css":["style.css"]},"version_build":"git.557a82f","version":"2.0.0-alpha","modules_path":["modules","lib\/modulekit","modulekit","node_modules"],"aliases":["debug","modulekit-form-debug"]},"form_compat":{"path":"lib\/modulekit\/form\/modules\/form_compat\/","id":"form_compat","include":{"php":["form_compat.php"]},"version_build":"git.557a82f","version":"2.0.0-alpha","modules_path":["modules","lib\/modulekit","modulekit","node_modules"],"aliases":["form_compat"]},"date":{"path":"lib\/modulekit\/form\/modules\/date\/","include":{"js":["pad.js","date_format.js","date_parse_from_format.js"]},"id":"date","version_build":"git.557a82f","version":"2.0.0-alpha","modules_path":["modules","lib\/modulekit","modulekit","node_modules"],"aliases":["date"]},"modulekit-form-markdown":{"path":"lib\/modulekit\/form\/modules\/markdown\/","id":"modulekit-form-markdown","depend":["modulekit-form"],"include":{"php":["form_element_markdown.php"],"js":["form_element_markdown.js"],"css":["form_element_markdown.css"]},"version_build":"git.557a82f","version":"2.0.0-alpha","modules_path":["modules","lib\/modulekit","modulekit","node_modules"],"aliases":["markdown","modulekit-form-markdown"]},"modulekit-form-geolocation":{"path":"lib\/modulekit\/form\/modules\/geolocation\/","id":"modulekit-form-geolocation","depend":["modulekit-form"],"include":{"php":["code.php"],"js":["code.js"]},"version_build":"git.557a82f","version":"2.0.0-alpha","modules_path":["modules","lib\/modulekit","modulekit","node_modules"],"aliases":["geolocation","modulekit-form-geolocation"]},"calendar":{"path":"lib\/modulekit\/form\/modules\/calendar\/","depend":["modulekit-form","date"],"include":{"js":["calendar.js"],"css":["calendar.css"]},"id":"calendar","version_build":"git.557a82f","version":"2.0.0-alpha","modules_path":["modules","lib\/modulekit","modulekit","node_modules"],"aliases":["calendar"]},"modulekit-lang":{"path":"lib\/modulekit\/lang\/","name":"Language System","id":"modulekit-lang","depend":["hooks","html","sprintf"],"include":{"php":["inc\/lang.php"],"mcp":["inc\/lang.php"],"js":["inc\/lang.js"]},"default_include":{"php":["code.php"],"js":["code.js"],"css":["style.css"]},"version_build":"git.0dc7f53","version":"","modules_path":["modules","lib\/modulekit","modulekit","node_modules"],"aliases":["lang","modulekit-lang"]},"lang_preferred":{"path":"lib\/modulekit\/lang\/modules\/lang_preferred\/","name":"Query preferred Languages","id":"lang_preferred","version_build":"git.0dc7f53","version":"","modules_path":["modules","lib\/modulekit","modulekit","node_modules"],"include":{"php":["code.php"],"js":[],"css":[]},"aliases":["lang_preferred"]},"lang_chooser":{"path":"lib\/modulekit\/lang\/modules\/lang_chooser\/","name":"Language Chooser","depend":["win","options_ui"],"id":"lang_chooser","version_build":"git.0dc7f53","version":"","modules_path":["modules","lib\/modulekit","modulekit","node_modules"],"include":{"php":["code.php"],"js":["code.js"],"css":[]},"aliases":["lang_chooser"]},"translation_statistics":{"path":"lib\/modulekit\/lang\/modules\/translation_statistics\/","name":"Translation Statistics","depend":["translation","win","ajax_indicator"],"id":"translation_statistics","version_build":"git.0dc7f53","version":"","modules_path":["modules","lib\/modulekit","modulekit","node_modules"],"include":{"php":["code.php"],"js":["code.js"],"css":["style.css"]},"aliases":["translation_statistics"]},"translation":{"path":"lib\/modulekit\/lang\/modules\/translation\/","name":"Translation System","depend":["win"],"id":"translation","version_build":"git.0dc7f53","version":"","modules_path":["modules","lib\/modulekit","modulekit","node_modules"],"include":{"php":["code.php"],"js":["code.js"],"css":["style.css"]},"aliases":["translation"]},"modulekit-page-config":{"path":"modulekit\/page-config\/","id":"modulekit-page-config","depend":["modulekit-form","messages"],"include":{"php":["modules.php"]},"desc":"A page for configuring modulekit modules. Need further dependencies: modulekit-form, modulekit-base, modulekit-lang.","version_build":"git.b0052270","version":"5.4","modules_path":["modules","lib\/modulekit","modulekit","node_modules"],"aliases":["page-config","modulekit-page-config"]},"modulekit-form-config":{"path":"modulekit\/form-config\/","id":"modulekit-form-config","include":{"php":["code.php"],"css":["style.css"]},"desc":"A form for configuring modulekit modules. Does not need any further dependencies.","version_build":"git.b0052270","version":"5.4","modules_path":["modules","lib\/modulekit","modulekit","node_modules"],"aliases":["form-config","modulekit-form-config"]},"weight-sort":{"path":"node_modules\/weight-sort\/","aliases":["weight_sort","weight-sort"],"id":"weight-sort","version":"1.3.0","include":{"php":["weightSort.php"],"js":["weightSort.js"]},"version_build":"git.b0052270","modules_path":["modules","lib\/modulekit","modulekit","node_modules"]},"openstreetbrowser-categories-main":{"path":"node_modules\/openstreetbrowser-categories-main\/","id":"openstreetbrowser-categories-main","version_build":"git.b0052270","version":"5.4","modules_path":["modules","lib\/modulekit","modulekit","node_modules"],"include":{"php":[],"js":[],"css":[]},"aliases":["openstreetbrowser-categories-main"]},"openstreetmap-tag-translations":{"path":"node_modules\/openstreetmap-tag-translations\/","id":"openstreetmap-tag-translations","lang_dirs":["tags"],"version_build":"git.fd5aad3","version":"","modules_path":["modules","lib\/modulekit","modulekit","node_modules"],"include":{"php":[],"js":[],"css":[]},"aliases":["openstreetmap-tag-translations"]},"modulekit":{"path":"modulekit\/","id":"modulekit","version":"1.1.0","include":[],"modules_path":"modules","version_build":"git.8c87535","aliases":["modulekit"]}},"alternatives":{"":["openstreetbrowser"],"openstreetbrowser":["openstreetbrowser"],"ajax":["modulekit-ajax"],"modulekit-ajax":["modulekit-ajax"],"base":["modulekit-base"],"modulekit-base":["modulekit-base"],"json_readable_encode":["json_readable_encode"],"opt_sort":["opt_sort"],"csrf":["csrf"],"shell_escape":["shell_escape"],"str_to_id":["str_to_id"],"sprintf":["sprintf"],"html":["html"],"weight_sort":["weight_sort","weight-sort"],"messages":["messages"],"hooks":["hooks"],"page":["page"],"resize_listener":["resize_listener"],"options":["options"],"form":["modulekit-form"],"modulekit-form":["modulekit-form"],"debug":["modulekit-form-debug"],"modulekit-form-debug":["modulekit-form-debug"],"form_compat":["form_compat"],"date":["date"],"markdown":["modulekit-form-markdown"],"modulekit-form-markdown":["modulekit-form-markdown"],"geolocation":["modulekit-form-geolocation"],"modulekit-form-geolocation":["modulekit-form-geolocation"],"calendar":["calendar"],"lang":["modulekit-lang"],"modulekit-lang":["modulekit-lang"],"lang_preferred":["lang_preferred"],"lang_chooser":["lang_chooser"],"translation_statistics":["translation_statistics"],"translation":["translation"],"page-config":["modulekit-page-config"],"modulekit-page-config":["modulekit-page-config"],"form-config":["modulekit-form-config"],"modulekit-form-config":["modulekit-form-config"],"weight-sort":["weight-sort"],"openstreetbrowser-categories-main":["openstreetbrowser-categories-main"],"openstreetmap-tag-translations":["openstreetmap-tag-translations"],"modulekit":["modulekit"]},"order":["hooks","weight_sort","html","sprintf","modulekit-lang","date","calendar","json_readable_encode","modulekit-form","modulekit-ajax","openstreetbrowser-categories-main","openstreetmap-tag-translations","openstreetbrowser"],"aliases":{"":"openstreetbrowser","openstreetbrowser":"openstreetbrowser","hooks":"hooks","html":"html","weight_sort":"weight_sort","lang":"modulekit-lang","modulekit-lang":"modulekit-lang","sprintf":"sprintf","form":"modulekit-form","modulekit-form":"modulekit-form","calendar":"calendar","date":"date","json_readable_encode":"json_readable_encode","ajax":"modulekit-ajax","modulekit-ajax":"modulekit-ajax","openstreetbrowser-categories-main":"openstreetbrowser-categories-main","openstreetmap-tag-translations":"openstreetmap-tag-translations"},"load":[],"config":{"load":[]},"root_path":"\/home\/osm\/openstreetbrowser.org\/","version":"5.4+git.b0052270"}; var modulekit_root_relative=""; function modulekit_loaded(module) { if((!modulekit)|| (!modulekit.aliases)) return false; if(modulekit.aliases[module]) module=modulekit.aliases[module]; for(var i=0; i<modulekit.order.length; i++) if(modulekit.order[i]==module) return modulekit.modules[module]; return false; } function modulekit_file(module, path, absolute_path) { var prefix=""; if(!path) path=""; if(typeof absolute_path=="undefined") absolute_path=false; if(absolute_path===true) { var rel=modulekit_root_relative.split("../"); prefix=location.pathname.split("/"); prefix=prefix.slice(0, prefix.length-rel.length).join("/")+"/"; } else if(absolute_path===false) { prefix=modulekit_root_relative; } if((!modulekit)|| (!modulekit.modules)) return; if((modulekit.aliases)&& (modulekit.aliases[module])) module=modulekit.aliases[module]; if((!modulekit.modules[module])|| (!modulekit.modules[module].path)) return; return prefix+modulekit.modules[module].path+path; } function modulekit_get_includes(type) { var list=[]; if((!modulekit)|| (!modulekit.modules)|| (!modulekit.order)) return []; for(var i=0; i<modulekit.order.length; i++) { var m=modulekit.order[i]; if(modulekit.modules[m].include&&modulekit.modules[m].include[type]) for(var j=0; j<modulekit.modules[m].include[type].length; j++) list.push(modulekit_file(m, modulekit.modules[m].include[type][j])); } return list; } </script> <script type='text/javascript' src="lib/modulekit/base//hooks/hooks.js?5.4+git.b0052270"></script> <script type='text/javascript' src="lib/modulekit/base//weight_sort/weight_sort.js?5.4+git.b0052270"></script> <script type='text/javascript' src="lib/modulekit/base//sprintf/sprintf.js?5.4+git.b0052270"></script> <script type='text/javascript' src="lib/modulekit/base//sprintf/vsprintf.js?5.4+git.b0052270"></script> <script type='text/javascript' src="lib/modulekit/lang/inc/lang.js?5.4+git.b0052270"></script> <script type='text/javascript' src="lib/modulekit/form/modules/date/pad.js?5.4+git.b0052270"></script> <script type='text/javascript' src="lib/modulekit/form/modules/date/date_format.js?5.4+git.b0052270"></script> <script type='text/javascript' src="lib/modulekit/form/modules/date/date_parse_from_format.js?5.4+git.b0052270"></script> <script type='text/javascript' src="lib/modulekit/form/modules/calendar/calendar.js?5.4+git.b0052270"></script> <script type='text/javascript' src="lib/modulekit/base//json_readable_encode/json_readable_encode.js?5.4+git.b0052270"></script> <script type='text/javascript' src="lib/modulekit/form/inc/functions.js?5.4+git.b0052270"></script> <script type='text/javascript' src="lib/modulekit/form/inc/form.js?5.4+git.b0052270"></script> <script type='text/javascript' src="lib/modulekit/form/inc/form_element.js?5.4+git.b0052270"></script> <script type='text/javascript' src="lib/modulekit/form/inc/form_element_array.js?5.4+git.b0052270"></script> <script type='text/javascript' src="lib/modulekit/form/inc/form_element_form_chooser.js?5.4+git.b0052270"></script> <script type='text/javascript' src="lib/modulekit/form/inc/form_element_form.js?5.4+git.b0052270"></script> <script type='text/javascript' src="lib/modulekit/form/inc/form_element_hash.js?5.4+git.b0052270"></script> <script type='text/javascript' src="lib/modulekit/form/inc/form_element_text.js?5.4+git.b0052270"></script> <script type='text/javascript' src="lib/modulekit/form/inc/form_element_textarea.js?5.4+git.b0052270"></script> <script type='text/javascript' src="lib/modulekit/form/inc/form_element_boolean.js?5.4+git.b0052270"></script> <script type='text/javascript' src="lib/modulekit/form/inc/form_element_radio.js?5.4+git.b0052270"></script> <script type='text/javascript' src="lib/modulekit/form/inc/form_element_checkbox.js?5.4+git.b0052270"></script> <script type='text/javascript' src="lib/modulekit/form/inc/form_element_color.js?5.4+git.b0052270"></script> <script type='text/javascript' src="lib/modulekit/form/inc/form_element_password.js?5.4+git.b0052270"></script> <script type='text/javascript' src="lib/modulekit/form/inc/form_element_keywords.js?5.4+git.b0052270"></script> <script type='text/javascript' src="lib/modulekit/form/inc/form_element_json.js?5.4+git.b0052270"></script> <script type='text/javascript' src="lib/modulekit/form/inc/form_element_unsupported.js?5.4+git.b0052270"></script> <script type='text/javascript' src="lib/modulekit/form/inc/form_element_select.js?5.4+git.b0052270"></script> <script type='text/javascript' src="lib/modulekit/form/inc/form_element_select_other.js?5.4+git.b0052270"></script> <script type='text/javascript' src="lib/modulekit/form/inc/form_element_numeric.js?5.4+git.b0052270"></script> <script type='text/javascript' src="lib/modulekit/form/inc/form_element_file.js?5.4+git.b0052270"></script> <script type='text/javascript' src="lib/modulekit/form/inc/form_element_date.js?5.4+git.b0052270"></script> <script type='text/javascript' src="lib/modulekit/form/inc/form_element_label.js?5.4+git.b0052270"></script> <script type='text/javascript' src="lib/modulekit/form/inc/form_element_autocomplete.js?5.4+git.b0052270"></script> <script type='text/javascript' src="lib/modulekit/form/inc/form_element_display.js?5.4+git.b0052270"></script> <script type='text/javascript' src="lib/modulekit/form/inc/form_element_hidden.js?5.4+git.b0052270"></script> <script type='text/javascript' src="lib/modulekit/form/inc/form_element_intermediate_text.js?5.4+git.b0052270"></script> <script type='text/javascript' src="lib/modulekit/form/inc/form_element_switch.js?5.4+git.b0052270"></script> <script type='text/javascript' src="lib/modulekit/form/inc/form_element_fixed.js?5.4+git.b0052270"></script> <script type='text/javascript' src="lib/modulekit/ajax/inc/ajax.js?5.4+git.b0052270"></script> <link rel='stylesheet' type='text/css' href="lib/modulekit/form/modules/calendar/calendar.css?5.4+git.b0052270"> <link rel='stylesheet' type='text/css' href="lib/modulekit/form/inc/form.css?5.4+git.b0052270"> <link rel='stylesheet' type='text/css' href="lib/modulekit/form/inc/form_element.css?5.4+git.b0052270"> <link rel='stylesheet' type='text/css' href="lib/modulekit/form/inc/form_element_text.css?5.4+git.b0052270"> <link rel='stylesheet' type='text/css' href="lib/modulekit/form/inc/form_element_array.css?5.4+git.b0052270"> <link rel='stylesheet' type='text/css' href="lib/modulekit/form/inc/form_element_form_chooser.css?5.4+git.b0052270"> <link rel='stylesheet' type='text/css' href="lib/modulekit/form/inc/form_element_form.css?5.4+git.b0052270"> <link rel='stylesheet' type='text/css' href="lib/modulekit/form/inc/form_element_keywords.css?5.4+git.b0052270"> <link rel='stylesheet' type='text/css' href="lib/modulekit/form/inc/form_element_textarea.css?5.4+git.b0052270"> <link rel='stylesheet' type='text/css' href="lib/modulekit/form/inc/form_element_select.css?5.4+git.b0052270"> <link rel='stylesheet' type='text/css' href="lib/modulekit/form/inc/form_element_autocomplete.css?5.4+git.b0052270"> <link rel='stylesheet' type='text/css' href="lib/modulekit/form/inc/form_element_file.css?5.4+git.b0052270"> <link rel='stylesheet' type='text/css' href="lib/modulekit/form/inc/theme.css?5.4+git.b0052270"> <link rel='stylesheet' type='text/css' href="style.css?5.4+git.b0052270"> <!-- add_html_headers --> <script type='text/javascript'> var options=[]; </script> <script type='text/javascript' src='.modulekit-cache/lang_en.js?5.4+git.b0052270'></script> <script type='text/javascript'> var ui_lang="en"; var language_list={"ast":"Asturianu","be":"\u0411\u0435\u043b\u0430\u0440\u0443\u0441\u043a\u0430\u044f \u043c\u043e\u0432\u0430","bg":"\u0431\u044a\u043b\u0433\u0430\u0440\u0441\u043a\u0438","bs":"bosanski\/\u0431\u043e\u0441\u0430\u043d\u0441\u043a\u0438","ca":"Catal\u00e0","cs":"\u010ce\u0161tina","da":"Dansk","de":"Deutsch","el":"\u0395\u03bb\u03bb\u03b7\u03bd\u03b9\u03ba\u03ac","en":"English","es":"Espa\u00f1ol","et":"Eesti","fi":"suomi","fr":"Fran\u00e7ais","ga":"Gaeilge","gl":"galego","hr":"hrvatski","hu":"magyar","is":"\u00edslenska","it":"Italiano","ja":"\u65e5\u672c\u8a9e","lt":"lietuvi\u0173 kalba","lv":"latvie\u0161u valoda","mk":"\u043c\u0430\u043a\u0435\u0434\u043e\u043d\u0441\u043a\u0438","mt":"Malti","nl":"Nederlands","no":"norsk","oc":"occitan","pl":"Polski","pt":"portugu\u00eas","pt-br":"Portugu\u00eas (Brasil)","ro":"Romanian","ru":"\u0420\u0443\u0441\u0441\u043a\u0438\u0439","sk":"sloven\u010dina","sl":"sloven\u0161\u010dina","sq":"shqip","sr":"\u0421\u0440\u043f\u0441\u043a\u0438","sv":"svenska","uk":"\u0423\u043a\u0440\u0430\u0457\u043d\u0441\u044c\u043a\u0430"}; var languages=["en","ast","ca","cs","da","de","el","es","et","fr","gl","hu","it","ja","nl","oc","pl","pt","pt-br","ro","ru","sr","uk","nb","tr","zh-hans"]; var lang_genders={"1":"F","2":"M","3":"N"}; var lang_non_translated=[]; </script> <meta http-equiv="content-language" content="en"> <script type='text/javascript'> var repositoriesGitea={"url":"https:\/\/www.openstreetbrowser.org\/dev"}; </script> <script type='text/javascript'> var config={"overpassUrl":["\/\/overpass-api.de\/api\/interpreter","\/\/api.openstreetmap.fr\/api\/interpreter","\/\/overpass.kumi.systems\/api\/interpreter","\/\/overpass-api.openhistoricalmap.org\/api\/interpreter"],"cache":"\/home\/osm\/cache","defaultView":{"lat":1.3673,"lon":103.8014,"zoom":10},"maxZoom":20,"GeoLite2-LicenseKey":"MVcx3ep09KNn06ij","baseMaps":[{"id":"osm-mapnik","name":"OSM Default","attribution":"© <a href=\"http:\/\/osm.org\/copyright\">OpenStreetMap<\/a> contributors","url":"\/\/tile.openstreetmap.org\/{z}\/{x}\/{y}.png","maxZoom":19},{"id":"opentopomap","name":"OpenTopoMap","attribution":"© <a href=\"http:\/\/osm.org\/copyright\">OpenStreetMap<\/a> contributors, Tiles: <a href=\"http:\/\/opentopomap.org\/\">OpenTopoMap<\/a>","url":"\/\/{s}.tile.opentopomap.org\/{z}\/{x}\/{y}.png","maxZoom":17},{"id":"hot","name":"Humanitarian","attribution":"© <a href=\"http:\/\/osm.org\/copyright\">OpenStreetMap<\/a> contributors, Tiles: <a href=\"http:\/\/hot.openstreetmap.org\/\">Humanitarian OpenStreetMap Team<\/a>","url":"\/\/tile-{s}.openstreetmap.fr\/hot\/{z}\/{x}\/{y}.png","maxZoom":20}],"urlOpenStreetMap":"https:\/\/www.openstreetmap.org"}; </script> <!-- /add_html_headers --> <script src="dist/openstreetbrowser.min.js?5.4+git.b0052270"></script> <script src="dist/locale-en.js?5.4+git.b0052270"></script> <!-- Piwik --> <script type="text/javascript"> var _paq = _paq || []; /* tracker methods like "setCustomDimension" should be called before "trackPageView" */ _paq.push(['trackPageView']); _paq.push(['enableLinkTracking']); _paq.push(['enableHeartBeatTimer']); (function() { var u="//openstreetbrowser.org/piwik/"; _paq.push(['setTrackerUrl', u+'piwik.php']); _paq.push(['setSiteId', '1']); var d=document, g=d.createElement('script'), s=d.getElementsByTagName('script')[0]; g.type='text/javascript'; g.async=true; g.defer=true; g.src=u+'piwik.js'; s.parentNode.insertBefore(g,s); register_hook('categoryOpen', function (category) { if (category.data.type !== 'index') { _paq.push(['trackEvent', 'CategoryOpen', category.id]) } }) register_hook('categoryClose', function (category) { if (category.data.type !== 'index') { _paq.push(['trackEvent', 'CategoryClose', category.id]) } }) register_hook('prepareDownload', function (conf) { _paq.push(['trackEvent', 'prepareDownload', conf.type]) }) register_hook('finishDownload', function (conf) { _paq.push(['trackEvent', 'finishDownload', conf.type]) }) register_hook('statePush', function (param, path) { _paq.push(['setCustomUrl', 'https://www.openstreetbrowser.org/' + path]) _paq.push(['trackPageView']) }) register_hook('initFinish', function (param, path) { _paq.push(['trackEvent', 'initFinish', 'Lang: ' + ui_lang]) }) })(); </script> <!-- End Piwik Code --> <style id='right-sidebar-css'> #right-sidebar #right-sidebar-close { position: absolute; right: 0; top: 0; font-size: 30px; cursor: pointer; } #right-sidebar { position: absolute; top: 0; bottom: 0; right: 0; width: 216px; border-left: 1px solid black; overflow-y: auto; font-size: 12px; font-family: "Helvetica Neue", "Arial", "Helvetica", sans-serif; padding-left: 2px; padding-right: 2px; } #right-sidebar h1 { margin-top: 2px; margin-bottom: 2px; } #right-sidebar h2 { font-size: 15px; font-weight: normal; border-bottom: 1px dotted #999; padding-bottom: 1px; margin-bottom: 0; } #right-sidebar .date { text-align: right; font-style: italic; color: #707070; } #right-sidebar div.article { background: #efefef; } #right-sidebar div.field-item > p:first-of-type { margin-top: 0; } .fullscreen #right-sidebar { display: none; } #twitter { height: 100%; } #map { right: 221px; } .adsense_sidebar { text-align: center; width: 200px; height: 200px; } .adsense_left { margin-left: auto; margin-right: auto; margin-bottom: 1em; width: 200px; height: 200px; } @media all and (max-width: 500px) { #map { right: 0; bottom: 203px; } #right-sidebar { left: 0; right: 0; width: auto; top: auto; height: 202px; border-left: none; border-top: 1px solid black; } .adsense_sidebar { display: none; } .adsense_left { width: 336px; height: 280px; } } @media all and (max-width: 500px) and (max-height: 600px) { #map { right: 0; bottom: 0; } #right-sidebar { display: none; } .adsense_sidebar { display: none; } .adsense_left { width: 336px; height: 280px; } } </style> </head> <body lang="en"> <div id='map'></div> <div id='mapShadow'></div> <div id='sidebar'> <div id='header'> <img src='img/osb_logo.png'> <div id='title'>OpenStreet <span class='large'>Browser</span><div class='version' title='5.4+git.b0052270'>5.4</div></div> </div> <div id='globalTabs'></div> <div id='content' class='list'> <div id='contentList'> <div id='contentListBaseCategory'></div> <div id='contentListAddCategories'></div> </div> <div id='contentDetails'></div> <div id='contentOptions'></div> </div> <div id='footer'> <ul id='menu'> <li><a target='_blank' href='https://github.com/plepe/openstreetbrowser'>Code</a></li> <li><a target='_blank' href='https://wiki.openstreetmap.org/wiki/OpenStreetBrowser'>About</a></li> </ul> </div> </div> <div id='loadingIndicator'> </div> <div id='right-sidebar'> <div id='right-sidebar-close' title='hide sidebar'>脳</div> <!-- osb-sidebar --> <h1>News</h1><h2><a target="_blank" href="https://blog.openstreetbrowser.org/node/100">Maxspeed Category now with traffic signs</a></h2><div class='article'><div class='date'>2024-11-03</div><p>The <a target="_blank" href="https://www.openstreetbrowser.org/#categories=car_maxspeed">maxspeed category</a> now includes maxspeed traffic signs (from zoom level 16). If the traffic signs have a direction, the icon will be rotated accordingly.</p><p>For this to work, I <a target="_blank" href="https://github.com/plepe/OpenStreetBrowser/commit/a7186317310b602684322080f2c1b0f9fbf1520e">added</a> a new TwigJS filter: '<a target="_blank" href="https://github.com/plepe/OpenStreetBrowser/blob/master/doc/TwigJS.md">parseDirection</a>', which handles values like 'east' or 'NNW'.</p> <a target="_blank" href="https://blog.openstreetbrowser.org/node/100" hreflang="en"><img loading="lazy" src="https://blog.openstreetbrowser.org/files/styles/medium/public/2024-11/maxspeed_with_traffic_sign.png?itok=ul4Kof2p" width="220" height="174" alt="Screenshot of the mapnik rendering of Bennetsbridge, overlayed by colored roads (depending on the speed). A few traffic signs with their speed limit are visible." class="image-style-medium"> </a> <a target='_blank' href="https://blog.openstreetbrowser.org/node/100">read more</a></div><h2><a target="_blank" href="https://blog.openstreetbrowser.org/node/99">New category: Etymology</a></h2><div class='article'><div class='date'>2024-09-15</div><p>The new <a target="_blank" href="https://openstreetbrowser.org/#categories=etymology">etymology category</a> (in the "Culture" section) informs about map features which have been named after someone or something. If a "<a target="_blank" href="https://wiki.openstreetmap.org/wiki/Key:name:etymology:wikidata">name:etymology:wikidata</a>" Tag is found, it will link to Wikidata.</p> <a target="_blank" href="https://blog.openstreetbrowser.org/node/99" hreflang="en"><img loading="lazy" src="https://blog.openstreetbrowser.org/files/styles/medium/public/2024-09/etymology_0.png?itok=AQ_Rc6nz" width="220" height="149" alt="Screenshot of OpenStreetBrowser, showing the "Etymology" category. A popup has been opened on "Tausigplatz" in Vienna. The popup shows the Etymology of name coming from Franziska Tausig and Otto Tausig. Both names link to Wikidata." class="image-style-medium"> </a> <a target='_blank' href="https://blog.openstreetbrowser.org/node/99">read more</a></div><h2><a target="_blank" href="https://blog.openstreetbrowser.org/node/98">Boundaries and Driving Side (v5.4)</a></h2><div class='article'><div class='date'>2024-07-23</div><p>There are some new functions for category developers:</p><ul><li>A Twig function 'boundaries(lat, lon)' which returns a list of boundaries the coordinate lies within (Countries).</li><li>A property of the <code>map</code> object called <code>boundaries</code> which holds the list of boundaries at the map center.</li><li>A property of the <code>map</code> object called <code>driving_side</code> which is either "left" or "right" with regards to the map center.</li></ul><a target='_blank' href="https://blog.openstreetbrowser.org/node/98">read more</a></div><h2><a target="_blank" href="https://blog.openstreetbrowser.org/node/97">Pin custom categories</a></h2><div class='article'><div class='date'>2024-03-24</div><p>There's a new feature for custom categories and categories of other repositories: You can "pin" or "bookmark" them, so that they get loaded for every visit of OpenStreetBrowser. It is saved in your session, which is long-lived. If you want to backup (or duplicate) your list of pinned categories, you can use the new "YAML" feature of Options.</p> <a target="_blank" href="https://blog.openstreetbrowser.org/node/97" hreflang="en"><img loading="lazy" src="https://blog.openstreetbrowser.org/files/styles/medium/public/2024-03/custom-category-pin.png?itok=2on4gd9R" width="220" height="124" alt="Screenshot of a custom category with the mouse hovering over the "Pin" feature." class="image-style-medium"> </a> <a target='_blank' href="https://blog.openstreetbrowser.org/node/97">read more</a></div><h2><a target="_blank" href="https://blog.openstreetbrowser.org/node/96">Improved Walking Amenities</a></h2><div class='article'><div class='date'>2024-03-01</div><p>The Walking Amenities category (under Transport -> Walking) now includes more items.</p> <p>Also, there's a new Walking Amenities category in the "Quality Control" section, which highlights map features with missing details.</p> <a target="_blank" href="https://blog.openstreetbrowser.org/node/96" hreflang="en"><img loading="lazy" src="https://blog.openstreetbrowser.org/files/styles/medium/public/2024-03/walking%20amenities%20waste.png?itok=1PxPhtwE" width="220" height="160" alt="Screenshot of OpenStreetBrowser with the "Walking Amenities" category open. A popup on a waste basket shows details about the item." class="image-style-medium"> </a> <a target='_blank' href="https://blog.openstreetbrowser.org/node/96">read more</a></div> </div> </div> <script> document.getElementById('right-sidebar-close').onclick = function () { var ob = document.getElementById('right-sidebar') ob.parentNode.removeChild(ob) var ob = document.getElementById('right-sidebar-css') ob.parentNode.removeChild(ob) map.invalidateSize() } </script> </body> </html>