Compare commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
251eeab02f |
@@ -1,42 +0,0 @@
|
|||||||
name: Deploy static content to S3
|
|
||||||
|
|
||||||
on:
|
|
||||||
push:
|
|
||||||
branches: ['main', 'master']
|
|
||||||
|
|
||||||
workflow_dispatch:
|
|
||||||
|
|
||||||
permissions:
|
|
||||||
contents: read
|
|
||||||
pages: write
|
|
||||||
id-token: write
|
|
||||||
|
|
||||||
concurrency:
|
|
||||||
group: 'pages'
|
|
||||||
cancel-in-progress: false
|
|
||||||
|
|
||||||
jobs:
|
|
||||||
deploy:
|
|
||||||
environment:
|
|
||||||
name: github-pages
|
|
||||||
runs-on: ubuntu-latest
|
|
||||||
steps:
|
|
||||||
- name: Checkout
|
|
||||||
uses: actions/checkout@v3
|
|
||||||
- name: Setup Node
|
|
||||||
uses: actions/setup-node@v3.7.0
|
|
||||||
with:
|
|
||||||
node-version: '13'
|
|
||||||
package-manager-cache: false
|
|
||||||
- run: npm install --include=dev
|
|
||||||
- name: Build project
|
|
||||||
run: npm run build
|
|
||||||
- name: Minio Deploy
|
|
||||||
uses: passidel/minio-deploy-action@v1
|
|
||||||
with:
|
|
||||||
endpoint: ${{ secrets.MINIO_ENDPOINT }}
|
|
||||||
access_key: ${{ secrets.MINIO_ACCESS_KEY }}
|
|
||||||
secret_key: ${{ secrets.MINIO_SECRET_KEY }}
|
|
||||||
bucket: 'swarm-static-websites'
|
|
||||||
source_dir: './dist'
|
|
||||||
target_dir: '/pascal.syma.dev/realtime-oepnv-tracker/'
|
|
||||||
@@ -1,205 +0,0 @@
|
|||||||
|
|
||||||
# Created by https://www.toptal.com/developers/gitignore/api/webstorm+all,node
|
|
||||||
# Edit at https://www.toptal.com/developers/gitignore?templates=webstorm+all,node
|
|
||||||
|
|
||||||
### Node ###
|
|
||||||
# Logs
|
|
||||||
logs
|
|
||||||
*.log
|
|
||||||
npm-debug.log*
|
|
||||||
yarn-debug.log*
|
|
||||||
yarn-error.log*
|
|
||||||
lerna-debug.log*
|
|
||||||
|
|
||||||
# Diagnostic reports (https://nodejs.org/api/report.html)
|
|
||||||
report.[0-9]*.[0-9]*.[0-9]*.[0-9]*.json
|
|
||||||
|
|
||||||
# Runtime data
|
|
||||||
pids
|
|
||||||
*.pid
|
|
||||||
*.seed
|
|
||||||
*.pid.lock
|
|
||||||
|
|
||||||
# Directory for instrumented libs generated by jscoverage/JSCover
|
|
||||||
lib-cov
|
|
||||||
|
|
||||||
# Coverage directory used by tools like istanbul
|
|
||||||
coverage
|
|
||||||
*.lcov
|
|
||||||
|
|
||||||
# nyc test coverage
|
|
||||||
.nyc_output
|
|
||||||
|
|
||||||
# Grunt intermediate storage (https://gruntjs.com/creating-plugins#storing-task-files)
|
|
||||||
.grunt
|
|
||||||
|
|
||||||
# Bower dependency directory (https://bower.io/)
|
|
||||||
bower_components
|
|
||||||
|
|
||||||
# node-waf configuration
|
|
||||||
.lock-wscript
|
|
||||||
|
|
||||||
# Compiled binary addons (https://nodejs.org/api/addons.html)
|
|
||||||
build/Release
|
|
||||||
|
|
||||||
# Dependency directories
|
|
||||||
node_modules/
|
|
||||||
jspm_packages/
|
|
||||||
|
|
||||||
# TypeScript v1 declaration files
|
|
||||||
typings/
|
|
||||||
|
|
||||||
# TypeScript cache
|
|
||||||
*.tsbuildinfo
|
|
||||||
|
|
||||||
# Optional npm cache directory
|
|
||||||
.npm
|
|
||||||
|
|
||||||
# Optional eslint cache
|
|
||||||
.eslintcache
|
|
||||||
|
|
||||||
# Microbundle cache
|
|
||||||
.rpt2_cache/
|
|
||||||
.rts2_cache_cjs/
|
|
||||||
.rts2_cache_es/
|
|
||||||
.rts2_cache_umd/
|
|
||||||
|
|
||||||
# Optional REPL history
|
|
||||||
.node_repl_history
|
|
||||||
|
|
||||||
# Output of 'npm pack'
|
|
||||||
*.tgz
|
|
||||||
|
|
||||||
# Yarn Integrity file
|
|
||||||
.yarn-integrity
|
|
||||||
|
|
||||||
# dotenv environment variables file
|
|
||||||
.env
|
|
||||||
.env.test
|
|
||||||
|
|
||||||
# parcel-bundler cache (https://parceljs.org/)
|
|
||||||
.cache
|
|
||||||
|
|
||||||
# Next.js build output
|
|
||||||
.next
|
|
||||||
|
|
||||||
# Nuxt.js build / generate output
|
|
||||||
.nuxt
|
|
||||||
dist
|
|
||||||
|
|
||||||
# Gatsby files
|
|
||||||
.cache/
|
|
||||||
# Comment in the public line in if your project uses Gatsby and not Next.js
|
|
||||||
# https://nextjs.org/blog/next-9-1#public-directory-support
|
|
||||||
# public
|
|
||||||
|
|
||||||
# vuepress build output
|
|
||||||
.vuepress/dist
|
|
||||||
|
|
||||||
# Serverless directories
|
|
||||||
.serverless/
|
|
||||||
|
|
||||||
# FuseBox cache
|
|
||||||
.fusebox/
|
|
||||||
|
|
||||||
# DynamoDB Local files
|
|
||||||
.dynamodb/
|
|
||||||
|
|
||||||
# TernJS port file
|
|
||||||
.tern-port
|
|
||||||
|
|
||||||
# Stores VSCode versions used for testing VSCode extensions
|
|
||||||
.vscode-test
|
|
||||||
|
|
||||||
### WebStorm+all ###
|
|
||||||
# Covers JetBrains IDEs: IntelliJ, RubyMine, PhpStorm, AppCode, PyCharm, CLion, Android Studio, WebStorm and Rider
|
|
||||||
# Reference: https://intellij-support.jetbrains.com/hc/en-us/articles/206544839
|
|
||||||
|
|
||||||
# User-specific stuff
|
|
||||||
.idea/**/workspace.xml
|
|
||||||
.idea/**/tasks.xml
|
|
||||||
.idea/**/usage.statistics.xml
|
|
||||||
.idea/**/dictionaries
|
|
||||||
.idea/**/shelf
|
|
||||||
|
|
||||||
# Generated files
|
|
||||||
.idea/**/contentModel.xml
|
|
||||||
|
|
||||||
# Sensitive or high-churn files
|
|
||||||
.idea/**/dataSources/
|
|
||||||
.idea/**/dataSources.ids
|
|
||||||
.idea/**/dataSources.local.xml
|
|
||||||
.idea/**/sqlDataSources.xml
|
|
||||||
.idea/**/dynamic.xml
|
|
||||||
.idea/**/uiDesigner.xml
|
|
||||||
.idea/**/dbnavigator.xml
|
|
||||||
|
|
||||||
# Gradle
|
|
||||||
.idea/**/gradle.xml
|
|
||||||
.idea/**/libraries
|
|
||||||
|
|
||||||
# Gradle and Maven with auto-import
|
|
||||||
# When using Gradle or Maven with auto-import, you should exclude module files,
|
|
||||||
# since they will be recreated, and may cause churn. Uncomment if using
|
|
||||||
# auto-import.
|
|
||||||
# .idea/artifacts
|
|
||||||
# .idea/compiler.xml
|
|
||||||
# .idea/jarRepositories.xml
|
|
||||||
# .idea/modules.xml
|
|
||||||
# .idea/*.iml
|
|
||||||
# .idea/modules
|
|
||||||
# *.iml
|
|
||||||
# *.ipr
|
|
||||||
|
|
||||||
# CMake
|
|
||||||
cmake-build-*/
|
|
||||||
|
|
||||||
# Mongo Explorer plugin
|
|
||||||
.idea/**/mongoSettings.xml
|
|
||||||
|
|
||||||
# File-based project format
|
|
||||||
*.iws
|
|
||||||
|
|
||||||
# IntelliJ
|
|
||||||
out/
|
|
||||||
|
|
||||||
# mpeltonen/sbt-idea plugin
|
|
||||||
.idea_modules/
|
|
||||||
|
|
||||||
# JIRA plugin
|
|
||||||
atlassian-ide-plugin.xml
|
|
||||||
|
|
||||||
# Cursive Clojure plugin
|
|
||||||
.idea/replstate.xml
|
|
||||||
|
|
||||||
# Crashlytics plugin (for Android Studio and IntelliJ)
|
|
||||||
com_crashlytics_export_strings.xml
|
|
||||||
crashlytics.properties
|
|
||||||
crashlytics-build.properties
|
|
||||||
fabric.properties
|
|
||||||
|
|
||||||
# Editor-based Rest Client
|
|
||||||
.idea/httpRequests
|
|
||||||
|
|
||||||
# Android studio 3.1+ serialized cache file
|
|
||||||
.idea/caches/build_file_checksums.ser
|
|
||||||
|
|
||||||
### WebStorm+all Patch ###
|
|
||||||
# Ignores the whole .idea folder and all .iml files
|
|
||||||
# See https://github.com/joeblau/gitignore.io/issues/186 and https://github.com/joeblau/gitignore.io/issues/360
|
|
||||||
|
|
||||||
.idea/
|
|
||||||
|
|
||||||
# Reason: https://github.com/joeblau/gitignore.io/issues/186#issuecomment-249601023
|
|
||||||
|
|
||||||
*.iml
|
|
||||||
modules.xml
|
|
||||||
.idea/misc.xml
|
|
||||||
*.ipr
|
|
||||||
|
|
||||||
# Sonarlint plugin
|
|
||||||
.idea/sonarlint
|
|
||||||
|
|
||||||
# End of https://www.toptal.com/developers/gitignore/api/webstorm+all,node
|
|
||||||
|
|
||||||
dist/
|
|
||||||
|
Before Width: | Height: | Size: 6.5 KiB After Width: | Height: | Size: 6.5 KiB |
|
After Width: | Height: | Size: 1.4 KiB |
|
After Width: | Height: | Size: 696 B |
|
After Width: | Height: | Size: 1.2 KiB |
@@ -1,48 +0,0 @@
|
|||||||
pipeline {
|
|
||||||
agent {
|
|
||||||
label 'node&&windows'
|
|
||||||
}
|
|
||||||
|
|
||||||
stages {
|
|
||||||
stage ('Initialize') {
|
|
||||||
steps {
|
|
||||||
echo 'Initializing..'
|
|
||||||
}
|
|
||||||
}
|
|
||||||
stage('Build') {
|
|
||||||
steps {
|
|
||||||
echo 'Building..'
|
|
||||||
bat 'npm install'
|
|
||||||
bat 'npm run build'
|
|
||||||
}
|
|
||||||
}
|
|
||||||
stage('Test') {
|
|
||||||
steps {
|
|
||||||
echo 'Testing..'
|
|
||||||
}
|
|
||||||
}
|
|
||||||
stage('Archive') {
|
|
||||||
when {
|
|
||||||
branch 'master'
|
|
||||||
expression {
|
|
||||||
currentBuild.result == null || currentBuild.result == 'SUCCESS'
|
|
||||||
}
|
|
||||||
}
|
|
||||||
steps {
|
|
||||||
echo 'Deploying....'
|
|
||||||
dir("dist") {
|
|
||||||
bat 'git init'
|
|
||||||
bat 'git add .'
|
|
||||||
bat 'git config --global user.email "jenkins@bosym.de"'
|
|
||||||
bat 'git config --global user.name "Jenkins"'
|
|
||||||
bat 'git commit -m "Deploy by Jenkins"'
|
|
||||||
withCredentials([usernamePassword(credentialsId: 'e3d97a6f-476f-489f-a207-4766a1c420cf', usernameVariable: 'username', passwordVariable: 'password')])
|
|
||||||
{
|
|
||||||
bat "git push --force --quiet \"https://$username:$password@git.bosym.de/Pascal/realtime-oepnv-tracker.git\" master:gh-pages"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
deleteDir()
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
After Width: | Height: | Size: 32 KiB |
|
After Width: | Height: | Size: 54 KiB |
|
After Width: | Height: | Size: 91 KiB |
|
After Width: | Height: | Size: 2.2 KiB |
|
After Width: | Height: | Size: 186 KiB |
|
After Width: | Height: | Size: 3.9 KiB |
|
After Width: | Height: | Size: 307 KiB |
|
After Width: | Height: | Size: 8.6 KiB |
|
After Width: | Height: | Size: 15 KiB |
|
After Width: | Height: | Size: 998 KiB |
|
After Width: | Height: | Size: 21 KiB |
|
After Width: | Height: | Size: 23 KiB |
|
After Width: | Height: | Size: 32 KiB |
|
After Width: | Height: | Size: 35 KiB |
|
After Width: | Height: | Size: 42 KiB |
|
After Width: | Height: | Size: 48 KiB |
|
After Width: | Height: | Size: 5.5 KiB |
|
After Width: | Height: | Size: 6.1 KiB |
|
After Width: | Height: | Size: 8.6 KiB |
|
After Width: | Height: | Size: 9.6 KiB |
|
After Width: | Height: | Size: 48 KiB |
|
After Width: | Height: | Size: 48 KiB |
@@ -0,0 +1,15 @@
|
|||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<browserconfig>
|
||||||
|
<msapplication>
|
||||||
|
<tile>
|
||||||
|
<square70x70logo src="mstile-70x70.png"/>
|
||||||
|
<square150x150logo src="mstile-150x150.png"/>
|
||||||
|
<wide310x150logo src="mstile-310x150.png"/>
|
||||||
|
<square310x310logo src="mstile-310x310.png"/>
|
||||||
|
<TileColor>#000</TileColor>
|
||||||
|
|
||||||
|
</tile>
|
||||||
|
|
||||||
|
</msapplication>
|
||||||
|
|
||||||
|
</browserconfig>
|
||||||
|
After Width: | Height: | Size: 508 B |
|
After Width: | Height: | Size: 1.8 KiB |
|
After Width: | Height: | Size: 3.9 KiB |
|
After Width: | Height: | Size: 32 KiB |
|
After Width: | Height: | Size: 28 KiB |
|
After Width: | Height: | Size: 322 KiB |
|
After Width: | Height: | Size: 6.9 KiB |
@@ -0,0 +1,59 @@
|
|||||||
|
{
|
||||||
|
"name": "RealTime Delbus",
|
||||||
|
"short_name": "RealTime Delbus",
|
||||||
|
"description": "Real-Time Delbus Map",
|
||||||
|
"dir": "auto",
|
||||||
|
"lang": "en-US",
|
||||||
|
"display": "standalone",
|
||||||
|
"orientation": "any",
|
||||||
|
"start_url": "../",
|
||||||
|
"background_color": "#000",
|
||||||
|
"theme_color": "#333",
|
||||||
|
"icons": [
|
||||||
|
{
|
||||||
|
"src": "android-chrome-36x36.png",
|
||||||
|
"sizes": "36x36",
|
||||||
|
"type": "image/png"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"src": "android-chrome-48x48.png",
|
||||||
|
"sizes": "48x48",
|
||||||
|
"type": "image/png"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"src": "android-chrome-72x72.png",
|
||||||
|
"sizes": "72x72",
|
||||||
|
"type": "image/png"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"src": "android-chrome-96x96.png",
|
||||||
|
"sizes": "96x96",
|
||||||
|
"type": "image/png"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"src": "android-chrome-144x144.png",
|
||||||
|
"sizes": "144x144",
|
||||||
|
"type": "image/png"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"src": "android-chrome-192x192.png",
|
||||||
|
"sizes": "192x192",
|
||||||
|
"type": "image/png"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"src": "android-chrome-256x256.png",
|
||||||
|
"sizes": "256x256",
|
||||||
|
"type": "image/png"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"src": "android-chrome-384x384.png",
|
||||||
|
"sizes": "384x384",
|
||||||
|
"type": "image/png"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"src": "android-chrome-512x512.png",
|
||||||
|
"sizes": "512x512",
|
||||||
|
"type": "image/png"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
@@ -0,0 +1,14 @@
|
|||||||
|
{
|
||||||
|
"version": "1.0.0",
|
||||||
|
"name": "RealTime Delbus",
|
||||||
|
"description": "Real-Time Delbus Map",
|
||||||
|
"icons": {
|
||||||
|
"60": "firefox_app_60x60.png",
|
||||||
|
"128": "firefox_app_128x128.png",
|
||||||
|
"512": "firefox_app_512x512.png"
|
||||||
|
},
|
||||||
|
"developer": {
|
||||||
|
"name": "syma.dev",
|
||||||
|
"url": "https://syma.dev"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
After Width: | Height: | Size: 32 KiB |
|
After Width: | Height: | Size: 34 KiB |
|
After Width: | Height: | Size: 70 KiB |
|
After Width: | Height: | Size: 128 KiB |
|
After Width: | Height: | Size: 8.2 KiB |
@@ -0,0 +1,4 @@
|
|||||||
|
/* @preserve
|
||||||
|
* Leaflet 1.7.1, a JS library for interactive maps. http://leafletjs.com
|
||||||
|
* (c) 2010-2019 Vladimir Agafonkin, (c) 2010-2011 CloudMade
|
||||||
|
*/
|
||||||
@@ -1,195 +0,0 @@
|
|||||||
<!--
|
|
||||||
~ Copyright (c) 2020. Pascal Syma <pascal@syma.dev>.
|
|
||||||
~ All rights reserved.
|
|
||||||
-->
|
|
||||||
|
|
||||||
<!DOCTYPE html>
|
|
||||||
<html lang="en">
|
|
||||||
<head>
|
|
||||||
<meta charset="UTF-8">
|
|
||||||
<title>Editor</title>
|
|
||||||
<link crossorigin="" href="https://unpkg.com/leaflet@1.7.1/dist/leaflet.css"
|
|
||||||
integrity="sha512-xodZBNTC5n17Xt2atTPuE1HxjVMSvLVW9ocqUKLsCC5CXdbqCmblAshOMAS6/keqq/sMZMZ19scR4PsZChSR7A=="
|
|
||||||
rel="stylesheet"/>
|
|
||||||
<style>
|
|
||||||
body {
|
|
||||||
margin: 0;
|
|
||||||
height: 0;
|
|
||||||
user-select: none; /* standard syntax */
|
|
||||||
-webkit-user-select: none; /* webkit (safari, chrome) browsers */
|
|
||||||
-moz-user-select: none; /* mozilla browsers */
|
|
||||||
-khtml-user-select: none; /* webkit (konqueror) browsers */
|
|
||||||
-ms-user-select: none; /* IE10+ */
|
|
||||||
}
|
|
||||||
|
|
||||||
#st {
|
|
||||||
position: fixed;
|
|
||||||
right: 0;
|
|
||||||
margin: 8px;
|
|
||||||
text-align: right;
|
|
||||||
}
|
|
||||||
|
|
||||||
#map {
|
|
||||||
width: 80%;
|
|
||||||
height: 100vh;
|
|
||||||
}
|
|
||||||
</style>
|
|
||||||
<script crossorigin=""
|
|
||||||
integrity="sha512-XQoYMqMTK8LvdxXYG3nZ448hOEQiglfqkJs1NOQV44cWnUrBc8PkAOcXy20w0vlaXaVUearIOBhiXZ5V3ynxwA=="
|
|
||||||
src="https://unpkg.com/leaflet@1.7.1/dist/leaflet.js"></script>
|
|
||||||
<link href="https://unpkg.com/leaflet-routing-machine@3.2.12/dist/leaflet-routing-machine.css" rel="stylesheet"/>
|
|
||||||
<script src="https://unpkg.com/leaflet-routing-machine@3.2.12/dist/leaflet-routing-machine.js"></script>
|
|
||||||
</head>
|
|
||||||
<body>
|
|
||||||
<div id="st">
|
|
||||||
<table id="stops">
|
|
||||||
<thead>
|
|
||||||
<tr>
|
|
||||||
<th>Name</th>
|
|
||||||
<th></th>
|
|
||||||
</tr>
|
|
||||||
</thead>
|
|
||||||
<tbody>
|
|
||||||
</tbody>
|
|
||||||
</table>
|
|
||||||
<label><textarea id="inp" rows="3"></textarea></label>
|
|
||||||
</div>
|
|
||||||
<div id="map"></div>
|
|
||||||
|
|
||||||
<script>
|
|
||||||
let route;
|
|
||||||
Number.prototype.mod = function (n) {
|
|
||||||
return ((this % n) + n) % n;
|
|
||||||
};
|
|
||||||
let stops = [];
|
|
||||||
let i = 0;
|
|
||||||
let map = L.map('map').setView([53.01839765015724, 8.636455535888674], 12);
|
|
||||||
L.tileLayer('https://{s}.tile.openstreetmap.org/{z}/{x}/{y}.png', {
|
|
||||||
attribution: '© <a href="https://www.openstreetmap.org/copyright">OpenStreetMap</a> contributors'
|
|
||||||
}).addTo(map);
|
|
||||||
let line = L.polyline([], {
|
|
||||||
color: '#000',
|
|
||||||
weight: 3
|
|
||||||
}).addTo(map)
|
|
||||||
|
|
||||||
|
|
||||||
let plan, p, a;
|
|
||||||
|
|
||||||
|
|
||||||
let tbl = document.getElementById("stops");
|
|
||||||
let inp = document.getElementById("inp");
|
|
||||||
inp.addEventListener('input', () => {
|
|
||||||
if (inp.value === null || inp.value === '')
|
|
||||||
return;
|
|
||||||
stops = inp.value.split('\n').map(l => {
|
|
||||||
return {
|
|
||||||
name: l,
|
|
||||||
x: null,
|
|
||||||
y: null
|
|
||||||
}
|
|
||||||
})
|
|
||||||
inp.value = ''
|
|
||||||
i = 0;
|
|
||||||
draw()
|
|
||||||
})
|
|
||||||
|
|
||||||
draw()
|
|
||||||
|
|
||||||
map.on('contextmenu', ev => {
|
|
||||||
// right
|
|
||||||
|
|
||||||
stops.splice(i, 0, {
|
|
||||||
name: null,
|
|
||||||
x: ev.latlng.lat,
|
|
||||||
y: ev.latlng.lng
|
|
||||||
})
|
|
||||||
|
|
||||||
i = (i + 1).mod(stops.length)
|
|
||||||
draw();
|
|
||||||
return false;
|
|
||||||
}, false);
|
|
||||||
|
|
||||||
map.on('click', ev => {
|
|
||||||
// left
|
|
||||||
|
|
||||||
stops[i].x = ev.latlng.lat
|
|
||||||
stops[i].y = ev.latlng.lng
|
|
||||||
|
|
||||||
if (stops[i].marker)
|
|
||||||
stops[i].marker.setLatLng(ev.latlng)
|
|
||||||
else if (stops[i].name)
|
|
||||||
stops[i].marker = L.marker(ev.latlng).addTo(map)
|
|
||||||
|
|
||||||
|
|
||||||
i = (i + 1).mod(stops.length)
|
|
||||||
draw();
|
|
||||||
return false;
|
|
||||||
}, false);
|
|
||||||
|
|
||||||
document.addEventListener('keydown', e => {
|
|
||||||
if (e.which === 38) {
|
|
||||||
// up
|
|
||||||
i = (i - 1).mod(stops.length)
|
|
||||||
draw()
|
|
||||||
e.preventDefault()
|
|
||||||
} else if (e.which === 40) {
|
|
||||||
// down
|
|
||||||
i = (i + 1).mod(stops.length)
|
|
||||||
draw()
|
|
||||||
e.preventDefault()
|
|
||||||
} else if (e.which === 13) {
|
|
||||||
// enter
|
|
||||||
let output = stops.map(s => `${s.x},${s.y}` + (s.name ? `,,${s.name}` : '')).join('\n')
|
|
||||||
|
|
||||||
// console.log(output)
|
|
||||||
|
|
||||||
|
|
||||||
let out = a._selectedRoute.coordinates.map(c => `${c.lat},${c.lng}`)
|
|
||||||
a._selectedRoute.waypointIndices.forEach((j, index) => {
|
|
||||||
out[j] += `,${stops[index].name}`
|
|
||||||
})
|
|
||||||
|
|
||||||
console.log(out.join('\n'))
|
|
||||||
|
|
||||||
} else if (e.which === 191) {
|
|
||||||
// #
|
|
||||||
|
|
||||||
|
|
||||||
plan = stops.map(s => L.latLng(s.x, s.y))
|
|
||||||
|
|
||||||
p = L.Routing.plan(plan)
|
|
||||||
|
|
||||||
a = L.Routing.control({
|
|
||||||
plan: p
|
|
||||||
}).addTo(map);
|
|
||||||
}
|
|
||||||
})
|
|
||||||
|
|
||||||
|
|
||||||
function draw() {
|
|
||||||
tbl.getElementsByTagName('tbody')[0].innerHTML = "";
|
|
||||||
let newLine = [];
|
|
||||||
stops.forEach((s, index) => {
|
|
||||||
const tr = document.createElement('tr');
|
|
||||||
const tdName = document.createElement('td');
|
|
||||||
tdName.innerText = s.name ? s.name : '-';
|
|
||||||
const tdI = document.createElement('td');
|
|
||||||
if (index === i)
|
|
||||||
tdI.innerText = '<';
|
|
||||||
|
|
||||||
|
|
||||||
tr.append(tdName, tdI);
|
|
||||||
|
|
||||||
tbl.getElementsByTagName('tbody')[0].append(tr)
|
|
||||||
|
|
||||||
if (s.y === null && s.x === null)
|
|
||||||
return;
|
|
||||||
|
|
||||||
newLine.push(L.latLng(s.x, s.y))
|
|
||||||
})
|
|
||||||
|
|
||||||
line.setLatLngs(newLine)
|
|
||||||
}
|
|
||||||
</script>
|
|
||||||
</body>
|
|
||||||
</html>
|
|
||||||
@@ -1,28 +1 @@
|
|||||||
<!--
|
<!doctype html><html lang="en"><head><meta charset="UTF-8"><title>Title</title><link rel="shortcut icon" href="assets/favicon.ico"><link rel="icon" type="image/png" sizes="16x16" href="assets/favicon-16x16.png"><link rel="icon" type="image/png" sizes="32x32" href="assets/favicon-32x32.png"><link rel="icon" type="image/png" sizes="48x48" href="assets/favicon-48x48.png"><link rel="manifest" href="assets/manifest.json"><meta name="mobile-web-app-capable" content="yes"><meta name="theme-color" content="#333"><meta name="application-name" content="RealTime Delbus"><link rel="apple-touch-icon" sizes="57x57" href="assets/apple-touch-icon-57x57.png"><link rel="apple-touch-icon" sizes="60x60" href="assets/apple-touch-icon-60x60.png"><link rel="apple-touch-icon" sizes="72x72" href="assets/apple-touch-icon-72x72.png"><link rel="apple-touch-icon" sizes="76x76" href="assets/apple-touch-icon-76x76.png"><link rel="apple-touch-icon" sizes="114x114" href="assets/apple-touch-icon-114x114.png"><link rel="apple-touch-icon" sizes="120x120" href="assets/apple-touch-icon-120x120.png"><link rel="apple-touch-icon" sizes="144x144" href="assets/apple-touch-icon-144x144.png"><link rel="apple-touch-icon" sizes="152x152" href="assets/apple-touch-icon-152x152.png"><link rel="apple-touch-icon" sizes="167x167" href="assets/apple-touch-icon-167x167.png"><link rel="apple-touch-icon" sizes="180x180" href="assets/apple-touch-icon-180x180.png"><link rel="apple-touch-icon" sizes="1024x1024" href="assets/apple-touch-icon-1024x1024.png"><meta name="apple-mobile-web-app-capable" content="yes"><meta name="apple-mobile-web-app-status-bar-style" content="black-translucent"><meta name="apple-mobile-web-app-title" content="RealTime Delbus"><meta name="msapplication-TileColor" content="#000"><meta name="msapplication-TileImage" content="assets/mstile-144x144.png"><meta name="msapplication-config" content="assets/browserconfig.xml"></head><body><div id="buttons"><button id="minus">-1</button> <button id="play">></button> <button id="real">></button> <button id="plus">+1</button> <button disabled="disabled" id="display">00:00</button> <button id="showStops">Show Stops</button> <label title="Minutes per Minute"><input id="mpm" max="10000" min="1" type="number" value="10"></label></div><div id="settings"></div><div id="map"></div><script src="bundle.min.js"></script></body></html>
|
||||||
~ Copyright (c) 2020. Pascal Syma <pascal@syma.dev>.
|
|
||||||
~ All rights reserved.
|
|
||||||
-->
|
|
||||||
|
|
||||||
<!DOCTYPE html>
|
|
||||||
<html lang="en">
|
|
||||||
<head>
|
|
||||||
<meta charset="UTF-8">
|
|
||||||
<title>Title</title>
|
|
||||||
</head>
|
|
||||||
<body>
|
|
||||||
<div id="buttons">
|
|
||||||
<button id="minus">-1</button>
|
|
||||||
<button id="play">></button>
|
|
||||||
<button id="real">></button>
|
|
||||||
<button id="plus">+1</button>
|
|
||||||
<button disabled id="display">00:00</button>
|
|
||||||
<button id="showStops">Show Stops</button>
|
|
||||||
<label title="Minutes per Minute">
|
|
||||||
<input id="mpm" max="10000" min="1" type="number" value="10">
|
|
||||||
</label>
|
|
||||||
</div>
|
|
||||||
<div id="settings">
|
|
||||||
</div>
|
|
||||||
<div id="map"></div>
|
|
||||||
</body>
|
|
||||||
</html>
|
|
||||||
@@ -1,38 +0,0 @@
|
|||||||
{
|
|
||||||
"name": "realtime-oepnv-tracker",
|
|
||||||
"version": "1.0.0",
|
|
||||||
"description": "",
|
|
||||||
"main": "index.js",
|
|
||||||
"scripts": {
|
|
||||||
"test": "echo \"Error: no test specified\" && exit 1",
|
|
||||||
"build": "webpack --config webpack/prod.js",
|
|
||||||
"start": "webpack-dev-server --config webpack/base.js"
|
|
||||||
},
|
|
||||||
"keywords": [],
|
|
||||||
"author": "",
|
|
||||||
"license": "ISC",
|
|
||||||
"devDependencies": {
|
|
||||||
"@babel/core": "^7.11.6",
|
|
||||||
"@babel/preset-env": "^7.11.5",
|
|
||||||
"@types/leaflet": "^1.5.17",
|
|
||||||
"babel-loader": "^8.1.0",
|
|
||||||
"clean-webpack-plugin": "^3.0.0",
|
|
||||||
"css-loader": "^4.3.0",
|
|
||||||
"csv-loader": "^3.0.3",
|
|
||||||
"favicons-webpack-plugin": "^4.2.0",
|
|
||||||
"file-loader": "^6.1.0",
|
|
||||||
"html-webpack-plugin": "^4.5.0",
|
|
||||||
"leaflet": "^1.7.1",
|
|
||||||
"raw-loader": "^4.0.1",
|
|
||||||
"source-map": "^0.7.3",
|
|
||||||
"style-loader": "^1.2.1",
|
|
||||||
"terser-webpack-plugin": "^4.2.2",
|
|
||||||
"ts-loader": "^8.0.4",
|
|
||||||
"typescript": "^4.0.3",
|
|
||||||
"webpack": "^4.44.2",
|
|
||||||
"webpack-cli": "^3.3.12",
|
|
||||||
"webpack-dev-server": "^3.11.0",
|
|
||||||
"webpack-merge": "^5.1.4",
|
|
||||||
"workbox-webpack-plugin": "^5.1.4"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -0,0 +1 @@
|
|||||||
|
if(!self.define){const e=e=>{"require"!==e&&(e+=".js");let s=Promise.resolve();return a[e]||(s=new Promise(async s=>{if("document"in self){const a=document.createElement("script");a.src=e,document.head.appendChild(a),a.onload=s}else importScripts(e),s()})),s.then(()=>{if(!a[e])throw new Error(`Module ${e} didn’t register its module`);return a[e]})},s=(s,a)=>{Promise.all(s.map(e)).then(e=>a(1===e.length?e[0]:e))},a={require:Promise.resolve(s)};self.define=(s,i,r)=>{a[s]||(a[s]=Promise.resolve().then(()=>{let a={};const c={uri:location.origin+s.slice(1)};return Promise.all(i.map(s=>{switch(s){case"exports":return a;case"module":return c;default:return e(s)}})).then(e=>{const s=r(...e);return a.default||(a.default=s),a})}))}}define("./service-worker.js",["./workbox-d9851aed"],(function(e){"use strict";e.skipWaiting(),e.clientsClaim(),e.precacheAndRoute([{url:"10cca2569353ece6802ee77f8fb9f880.png",revision:"659ae3a3569841ecdf1ea77551b0c220"},{url:"2b3e1faf89f94a4835397e7a43b4f77d.png",revision:"2273e3d8ad9264b7daa5bdbf8e6b47f8"},{url:"416d91365b44e4b4f4777663e6f009f3.png",revision:"a6137456ed160d7606981aa57c559898"},{url:"8f2c4d11474275fbc1614b9098334eae.png",revision:"4f0283c6ce28e888000e978e537a6a56"},{url:"assets/android-chrome-144x144.png",revision:"6dd8c34730a593747f66b2c4439a7aca"},{url:"assets/android-chrome-192x192.png",revision:"277961bcf261b6e9f5c9d01b0090f27e"},{url:"assets/android-chrome-256x256.png",revision:"092e78b08c4db38958d9c83e6b87c2fd"},{url:"assets/android-chrome-36x36.png",revision:"e1f37fc8ef9344e3e6130e954630a489"},{url:"assets/android-chrome-384x384.png",revision:"6fc10bb5357fbeea2e89237d8c96782b"},{url:"assets/android-chrome-48x48.png",revision:"0f06b2daa375f2773b124fc55a97933e"},{url:"assets/android-chrome-512x512.png",revision:"be6ab3e1680bd6c38e5a91982f710fdd"},{url:"assets/android-chrome-72x72.png",revision:"66a2870651b66664b5ea5a3571db4bfc"},{url:"assets/android-chrome-96x96.png",revision:"fd52ce8240310bfc96bd9f619c47ef13"},{url:"assets/apple-touch-icon-1024x1024.png",revision:"edb02efda84d579a0ba340e963f57f56"},{url:"assets/apple-touch-icon-114x114.png",revision:"f8a1f3d1f0018a195379dcc89df9aa83"},{url:"assets/apple-touch-icon-120x120.png",revision:"77a4c4ccd65321a750b465baa1576180"},{url:"assets/apple-touch-icon-144x144.png",revision:"6526e0c4826d95e94f442704701bffd8"},{url:"assets/apple-touch-icon-152x152.png",revision:"d3f147ed1da71f543d5ed0333d94ae7a"},{url:"assets/apple-touch-icon-167x167.png",revision:"0ca74de5d171622bea2b8c97d198c30f"},{url:"assets/apple-touch-icon-180x180.png",revision:"c9858974b1cb34938a3b88b84582581e"},{url:"assets/apple-touch-icon-57x57.png",revision:"bffb9e873a0ec2f6e1836203914978ca"},{url:"assets/apple-touch-icon-60x60.png",revision:"4ed39488742d820317110c702e924244"},{url:"assets/apple-touch-icon-72x72.png",revision:"a1213488d8e708a88947afe777550b01"},{url:"assets/apple-touch-icon-76x76.png",revision:"ec0d020b2f089e25368538eda9c2aca6"},{url:"assets/apple-touch-icon-precomposed.png",revision:"c9858974b1cb34938a3b88b84582581e"},{url:"assets/apple-touch-icon.png",revision:"c9858974b1cb34938a3b88b84582581e"},{url:"assets/browserconfig.xml",revision:"c963c752b7288b2b87b16118441d5f2c"},{url:"assets/favicon-16x16.png",revision:"2a07241a039f4c0cfe1de10ec62167f6"},{url:"assets/favicon-32x32.png",revision:"81ad4741de08bfb9ed57dcc5d644a941"},{url:"assets/favicon-48x48.png",revision:"0f06b2daa375f2773b124fc55a97933e"},{url:"assets/favicon.ico",revision:"cb65b38fc20aa5943d7a057426b95e4f"},{url:"assets/firefox_app_128x128.png",revision:"ff119ece7d7a1ca6585b9c12e32d8e8e"},{url:"assets/firefox_app_512x512.png",revision:"5055ca8bba6f439125def14a3674277a"},{url:"assets/firefox_app_60x60.png",revision:"2dbc7ebc429746242fa65eb1e475e99a"},{url:"assets/manifest.json",revision:"e6ecad440a0e0ae4269c81ff823473b4"},{url:"assets/manifest.webapp",revision:"6e99e56ef6c07719d2a2b07271aed41c"},{url:"assets/mstile-144x144.png",revision:"6dd8c34730a593747f66b2c4439a7aca"},{url:"assets/mstile-150x150.png",revision:"bf29e908134b04ae3c5afa8ccfb15939"},{url:"assets/mstile-310x150.png",revision:"4ac9297e5bd110d97283a1dd93512c74"},{url:"assets/mstile-310x310.png",revision:"27f9d37edf45de2bac97ca4a274d2a32"},{url:"assets/mstile-70x70.png",revision:"e9f6312397a923992a4ea31947f76a6a"},{url:"bundle.min.js",revision:"59988b628dcf598ad873cba9ede45e12"},{url:"bundle.min.js.LICENSE.txt",revision:"223e1043e6c92cd5b8490b603521d509"},{url:"index.html",revision:"1ad5c479110e6c11709901c6e7741b4b"}],{})}));
|
||||||
@@ -1,88 +0,0 @@
|
|||||||
/*
|
|
||||||
* Copyright (c) 2020. Pascal Syma <pascal@syma.dev>.
|
|
||||||
* All rights reserved.
|
|
||||||
*/
|
|
||||||
|
|
||||||
// @ts-ignore
|
|
||||||
import imgBusE from './east.png';
|
|
||||||
// @ts-ignore
|
|
||||||
import {Icon, Marker} from "leaflet";
|
|
||||||
import Line from "./Line";
|
|
||||||
import Coordinate from "./Coordinate";
|
|
||||||
|
|
||||||
export default class Bus {
|
|
||||||
readonly offset: number;
|
|
||||||
readonly line: Line;
|
|
||||||
|
|
||||||
public delay: number = 0;
|
|
||||||
public marker: Marker;
|
|
||||||
|
|
||||||
constructor(line: Line, offset: number = 0) {
|
|
||||||
this.line = line;
|
|
||||||
this.offset = offset
|
|
||||||
this.marker = new Marker([53.0518179006886, 8.63831533914209], {
|
|
||||||
icon: new Icon({
|
|
||||||
iconUrl: imgBusE,
|
|
||||||
iconSize: [61, 29],
|
|
||||||
iconAnchor: [30.5, 26],
|
|
||||||
popupAnchor: [0, -25]
|
|
||||||
})
|
|
||||||
}).addTo(this.line.map);
|
|
||||||
}
|
|
||||||
|
|
||||||
draw(s: number) {
|
|
||||||
|
|
||||||
// @ts-ignore
|
|
||||||
const progress = (this.offset + s - this.delay).mod(this.line.duration);
|
|
||||||
|
|
||||||
|
|
||||||
let position = this.getCurrentPosition(progress);
|
|
||||||
this.marker.setLatLng([position.x, position.y]).bindPopup(this.line.name + ' > ' + this.getNextEnd(progress) + '<br>> ' + this.getNextStop(progress));
|
|
||||||
let icon = this.marker.getIcon();
|
|
||||||
// icon.options.iconUrl = position.headingEast ? imgBusE : imgBusW;
|
|
||||||
this.marker.setIcon(icon)
|
|
||||||
}
|
|
||||||
|
|
||||||
public getNextStop(progress: number = 0): string {
|
|
||||||
let br = 0
|
|
||||||
for (; br < this.line.stopBreaks.length && progress > this.line.stopBreaks[br]; br++) {
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
return this.line.stops[br].name;
|
|
||||||
}
|
|
||||||
|
|
||||||
public getNextEnd(progress: number = 0): string {
|
|
||||||
let br = 0
|
|
||||||
for (; br < this.line.endBreaks.length && progress > this.line.endBreaks[br]; br++) {
|
|
||||||
}
|
|
||||||
|
|
||||||
// @ts-ignore
|
|
||||||
br = br.mod(this.line.ends.length)
|
|
||||||
return this.line.ends[br];
|
|
||||||
}
|
|
||||||
|
|
||||||
public getCurrentPosition(progress: number = 0): Coordinate {
|
|
||||||
let br = 0
|
|
||||||
for (; br < this.line.breaks.length && progress > this.line.breaks[br]; br++) {
|
|
||||||
}
|
|
||||||
|
|
||||||
let top = this.line.coords[br];
|
|
||||||
// @ts-ignore
|
|
||||||
let bottomBr = (br - 1).mod(this.line.breaks.length);
|
|
||||||
let bottom = this.line.coords[bottomBr];
|
|
||||||
|
|
||||||
if (progress < this.line.breaks[0])
|
|
||||||
return this.line.coords[0];
|
|
||||||
if (!bottom) {
|
|
||||||
return top;
|
|
||||||
}
|
|
||||||
|
|
||||||
let percentToBr = (progress - this.line.breaks[bottomBr]) / (this.line.breaks[br] - this.line.breaks[bottomBr]);
|
|
||||||
return new Coordinate(
|
|
||||||
bottom.x + percentToBr * (top.x - bottom.x),
|
|
||||||
bottom.y + percentToBr * (top.y - bottom.y)
|
|
||||||
)
|
|
||||||
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -1,31 +0,0 @@
|
|||||||
/*
|
|
||||||
* Copyright (c) 2020. Pascal Syma <pascal@syma.dev>.
|
|
||||||
* All rights reserved.
|
|
||||||
*/
|
|
||||||
|
|
||||||
export default class Coordinate {
|
|
||||||
|
|
||||||
readonly x: number;
|
|
||||||
readonly y: number;
|
|
||||||
|
|
||||||
constructor(x: number, y: number) {
|
|
||||||
this.x = x;
|
|
||||||
this.y = y;
|
|
||||||
}
|
|
||||||
|
|
||||||
distance(other: Coordinate): number {
|
|
||||||
if (this.equals(other))
|
|
||||||
return 0;
|
|
||||||
if (!other)
|
|
||||||
return 0;
|
|
||||||
|
|
||||||
return Math.sqrt(Math.pow(other.x - this.x, 2) + Math.pow(other.y - this.y, 2))
|
|
||||||
}
|
|
||||||
|
|
||||||
equals(other: Coordinate = null): boolean {
|
|
||||||
if (!other)
|
|
||||||
return false;
|
|
||||||
|
|
||||||
return this.x === other.x && this.y === other.y;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -1,113 +0,0 @@
|
|||||||
/*
|
|
||||||
* Copyright (c) 2020. Pascal Syma <pascal@syma.dev>.
|
|
||||||
* All rights reserved.
|
|
||||||
*/
|
|
||||||
|
|
||||||
import {LatLng, Map, Polyline} from "leaflet";
|
|
||||||
import Stop from "./Stop";
|
|
||||||
import Coordinate from "./Coordinate";
|
|
||||||
|
|
||||||
export default class Line {
|
|
||||||
readonly map: Map;
|
|
||||||
readonly name: string;
|
|
||||||
readonly stops: Stop[] = [];
|
|
||||||
readonly ends: string[] = [];
|
|
||||||
|
|
||||||
readonly breaks: number[] = [];
|
|
||||||
readonly stopBreaks: number[] = [];
|
|
||||||
readonly endBreaks: number[] = [];
|
|
||||||
readonly duration: number = 0;
|
|
||||||
readonly coords: Coordinate[];
|
|
||||||
readonly color: string = '#000';
|
|
||||||
|
|
||||||
constructor(map: Map, name: string, stops: string, color: string) {
|
|
||||||
this.map = map;
|
|
||||||
this.color = color
|
|
||||||
this.name = name;
|
|
||||||
let coords = stops.split("\n").map(e => {
|
|
||||||
let a = e.split(',');
|
|
||||||
return a.length > 2 ? new Stop(Number.parseFloat(a[0]), Number.parseFloat(a[1]), Number.parseFloat(a[2]), a[3], a.length === 5 ? a[4] : null) : new Coordinate(Number.parseFloat(a[0]), Number.parseFloat(a[1]));
|
|
||||||
});
|
|
||||||
this.coords = coords;
|
|
||||||
|
|
||||||
let lastStop = <Stop>coords[0];
|
|
||||||
let length = 0;
|
|
||||||
let breaks: number[] = [];
|
|
||||||
for (let i = 0; i < coords.length; i++) {
|
|
||||||
if (coords[i] instanceof Stop) {
|
|
||||||
let stop = <Stop>coords[i];
|
|
||||||
this.stops.push(stop)
|
|
||||||
this.stopBreaks.push(stop.minute)
|
|
||||||
if (stop.end) {
|
|
||||||
this.endBreaks.push(stop.minute)
|
|
||||||
this.ends.push(stop.end)
|
|
||||||
}
|
|
||||||
|
|
||||||
const td = stop.minute - lastStop.minute
|
|
||||||
if (coords[i - 1])
|
|
||||||
length += coords[i - 1].distance(stop)
|
|
||||||
breaks.map(e => lastStop.minute + (e / length) * td).forEach(e => this.breaks.push(e));
|
|
||||||
|
|
||||||
|
|
||||||
this.breaks.push(stop.minute)
|
|
||||||
|
|
||||||
length = 0;
|
|
||||||
breaks = [];
|
|
||||||
|
|
||||||
lastStop = stop
|
|
||||||
} else {
|
|
||||||
let len = coords[i - 1].distance(coords[i]);
|
|
||||||
length += len;
|
|
||||||
breaks.push(length)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
this.duration = lastStop.minute
|
|
||||||
}
|
|
||||||
|
|
||||||
drawStops(show: boolean = true) {
|
|
||||||
if (show) {
|
|
||||||
this.stops.forEach(s => s.marker.addTo(this.map))
|
|
||||||
} else {
|
|
||||||
this.stops.forEach(s => s.marker.removeFrom(this.map))
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
draw() {
|
|
||||||
let pointList = this.coords.map(c => new LatLng(c.x, c.y));
|
|
||||||
new Polyline(pointList, {
|
|
||||||
color: this.color,
|
|
||||||
weight: 5,
|
|
||||||
// opacity: 0.7
|
|
||||||
}).addTo(this.map)
|
|
||||||
this.stops.forEach(s => {
|
|
||||||
// if (s.isEnd)
|
|
||||||
// new Popup().setLatLng([s.x, s.y]).setContent(this.name + ' - ' + s.name).openOn(this.map)
|
|
||||||
})
|
|
||||||
// let last: Coordinate = null;
|
|
||||||
// this.coords.forEach(c => {
|
|
||||||
// ctx.beginPath()
|
|
||||||
// ctx.textAlign = "center";
|
|
||||||
// if (c instanceof Stop) {
|
|
||||||
// let stop: Stop = c;
|
|
||||||
// ctx.arc(c.x, c.y, 5, 0, 2 * Math.PI);
|
|
||||||
// ctx.strokeStyle = this.color
|
|
||||||
// ctx.fillStyle = '#000'
|
|
||||||
// ctx.fillText(stop.name, c.x, c.y - 10);
|
|
||||||
// }
|
|
||||||
// ctx.stroke()
|
|
||||||
// ctx.closePath()
|
|
||||||
// if (last) {
|
|
||||||
// ctx.beginPath()
|
|
||||||
// ctx.moveTo(last.x, last.y)
|
|
||||||
// ctx.lineWidth = 3;
|
|
||||||
// ctx.lineTo(c.x, c.y)
|
|
||||||
// ctx.strokeStyle = this.color
|
|
||||||
// ctx.stroke()
|
|
||||||
// ctx.closePath()
|
|
||||||
// }
|
|
||||||
// last = c;
|
|
||||||
// })
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
}
|
|
||||||
@@ -1,22 +0,0 @@
|
|||||||
/*
|
|
||||||
* Copyright (c) 2020. Pascal Syma <pascal@syma.dev>.
|
|
||||||
* All rights reserved.
|
|
||||||
*/
|
|
||||||
|
|
||||||
import Coordinate from "./Coordinate";
|
|
||||||
import {Marker, Popup} from "leaflet";
|
|
||||||
|
|
||||||
export default class Stop extends Coordinate {
|
|
||||||
readonly name: string;
|
|
||||||
readonly minute: number;
|
|
||||||
readonly marker: Marker;
|
|
||||||
readonly end: string;
|
|
||||||
|
|
||||||
constructor(x: number, y: number, minute: number, name: string, end: string = null) {
|
|
||||||
super(x, y);
|
|
||||||
this.minute = minute;
|
|
||||||
this.name = name;
|
|
||||||
this.marker = new Marker([this.x, this.y]).bindPopup(this.name)
|
|
||||||
this.end = end
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -1,174 +0,0 @@
|
|||||||
/*
|
|
||||||
* Copyright (c) 2020. Pascal Syma <pascal@syma.dev>.
|
|
||||||
* All rights reserved.
|
|
||||||
*/
|
|
||||||
require('leaflet/dist/leaflet.css')
|
|
||||||
require('./main.css')
|
|
||||||
|
|
||||||
Number.prototype.mod = function (n) {
|
|
||||||
return ((this % n) + n) % n;
|
|
||||||
};
|
|
||||||
|
|
||||||
import * as L from 'leaflet';
|
|
||||||
import Bus from "./Bus";
|
|
||||||
import Line from "./Line";
|
|
||||||
import stops201 from './lines/201.csv';
|
|
||||||
import stops204 from './lines/204.csv';
|
|
||||||
import stops205 from './lines/205.csv';
|
|
||||||
import stops206 from './lines/206.csv';
|
|
||||||
|
|
||||||
import markerIcon2x from 'leaflet/dist/images/marker-icon-2x.png';
|
|
||||||
import markerIcon from 'leaflet/dist/images/marker-icon.png';
|
|
||||||
import markerShadow from 'leaflet/dist/images/marker-shadow.png';
|
|
||||||
|
|
||||||
// @ts-ignore
|
|
||||||
delete L.Icon.Default.prototype._getIconUrl;
|
|
||||||
|
|
||||||
L.Icon.Default.mergeOptions({
|
|
||||||
iconRetinaUrl: markerIcon2x,
|
|
||||||
iconUrl: markerIcon,
|
|
||||||
shadowUrl: markerShadow
|
|
||||||
});
|
|
||||||
|
|
||||||
|
|
||||||
let map = L.map('map').setView([53.041883898950985, 8.668813705444338], 13);
|
|
||||||
L.tileLayer('https://{s}.tile.openstreetmap.de/{z}/{x}/{y}.png', {
|
|
||||||
'attribution': 'Kartendaten © <a href="https://www.openstreetmap.org/copyright">OpenStreetMap</a> Mitwirkende',
|
|
||||||
'useCache': true
|
|
||||||
}).addTo(map);
|
|
||||||
|
|
||||||
let line201 = new Line(map, "201", stops201, '#fbce18');
|
|
||||||
let line204 = new Line(map, "204", stops204, '#99207e');
|
|
||||||
let line205 = new Line(map, "205", stops205, '#009fe3');
|
|
||||||
let line206 = new Line(map, "206", stops206, '#1c60b2');
|
|
||||||
console.log(line201);
|
|
||||||
|
|
||||||
let lines = [line201, line204, line205, line206];
|
|
||||||
|
|
||||||
|
|
||||||
let btnMinus = document.getElementById("minus");
|
|
||||||
let btnPlay = document.getElementById("play");
|
|
||||||
let btnReal = document.getElementById("real");
|
|
||||||
let btnPlus = document.getElementById("plus");
|
|
||||||
let btnDisplay = document.getElementById("display");
|
|
||||||
let btnShowStops = document.getElementById("showStops");
|
|
||||||
let inpMpm = document.getElementById("mpm");
|
|
||||||
|
|
||||||
inpMpm.addEventListener('change', () => mpm = parseInt(inpMpm.value))
|
|
||||||
|
|
||||||
lines.forEach(l => l.draw())
|
|
||||||
|
|
||||||
let isRunning = false;
|
|
||||||
let realIsRunning = false;
|
|
||||||
let interval;
|
|
||||||
let progress = 0;
|
|
||||||
let mpm = parseInt(inpMpm.value);
|
|
||||||
let showStops = false;
|
|
||||||
|
|
||||||
let busses = [
|
|
||||||
new Bus(line201),
|
|
||||||
new Bus(line201, 30),
|
|
||||||
new Bus(line201, 60),
|
|
||||||
new Bus(line201, 90),
|
|
||||||
new Bus(line201, 120),
|
|
||||||
new Bus(line204),
|
|
||||||
new Bus(line204, 30),
|
|
||||||
new Bus(line204, 60),
|
|
||||||
new Bus(line204, 90),
|
|
||||||
new Bus(line204, 120),
|
|
||||||
new Bus(line205),
|
|
||||||
new Bus(line205, 30),
|
|
||||||
new Bus(line205, 60),
|
|
||||||
new Bus(line206),
|
|
||||||
new Bus(line206, 30),
|
|
||||||
new Bus(line206, 60),
|
|
||||||
];
|
|
||||||
|
|
||||||
run(0)
|
|
||||||
|
|
||||||
|
|
||||||
function run(s) {
|
|
||||||
if (s instanceof Date) {
|
|
||||||
const hours = s.getHours()
|
|
||||||
const minutes = s.getMinutes();
|
|
||||||
const seconds = s.getSeconds();
|
|
||||||
|
|
||||||
progress = (60 * hours) + minutes + (seconds / 60);
|
|
||||||
} else
|
|
||||||
progress += s;
|
|
||||||
const mprogress = progress.mod(60);
|
|
||||||
const hours = Math.floor(progress / 60);
|
|
||||||
const minutes = Math.floor(mprogress);
|
|
||||||
const seconds = Math.floor((mprogress * 60).mod(60))
|
|
||||||
btnDisplay.innerText = (hours > 9 ? hours : "0" + hours) + ":" + (minutes > 9 ? minutes : "0" + minutes) + ":" + (seconds > 9 ? seconds : "0" + seconds)
|
|
||||||
|
|
||||||
busses.forEach(b => b.draw(progress))
|
|
||||||
}
|
|
||||||
|
|
||||||
btnMinus.addEventListener('click', () => {
|
|
||||||
run(-1);
|
|
||||||
})
|
|
||||||
|
|
||||||
btnPlus.addEventListener('click', () => {
|
|
||||||
run(1);
|
|
||||||
})
|
|
||||||
|
|
||||||
|
|
||||||
btnPlay.addEventListener('click', () => {
|
|
||||||
if (realIsRunning) {
|
|
||||||
clearInterval(interval)
|
|
||||||
btnReal.innerText = '>'
|
|
||||||
realIsRunning = false
|
|
||||||
}
|
|
||||||
|
|
||||||
if (isRunning) {
|
|
||||||
clearInterval(interval)
|
|
||||||
btnPlay.innerText = '>'
|
|
||||||
} else {
|
|
||||||
interval = setInterval(() => {
|
|
||||||
run(mpm / 600);
|
|
||||||
}, 100)
|
|
||||||
btnPlay.innerText = '||'
|
|
||||||
}
|
|
||||||
|
|
||||||
isRunning = !isRunning;
|
|
||||||
})
|
|
||||||
|
|
||||||
|
|
||||||
btnReal.addEventListener('click', () => {
|
|
||||||
if (isRunning) {
|
|
||||||
clearInterval(interval)
|
|
||||||
btnPlay.innerText = '>'
|
|
||||||
isRunning = false
|
|
||||||
}
|
|
||||||
|
|
||||||
if (realIsRunning) {
|
|
||||||
clearInterval(interval)
|
|
||||||
btnReal.innerText = '>'
|
|
||||||
} else {
|
|
||||||
interval = setInterval(() => {
|
|
||||||
run(new Date());
|
|
||||||
}, 100)
|
|
||||||
btnReal.innerText = '||'
|
|
||||||
}
|
|
||||||
|
|
||||||
realIsRunning = !realIsRunning;
|
|
||||||
})
|
|
||||||
|
|
||||||
btnShowStops.addEventListener('click', () => {
|
|
||||||
showStops = !showStops
|
|
||||||
|
|
||||||
lines.forEach(l => l.drawStops(showStops))
|
|
||||||
|
|
||||||
btnShowStops.innerText = showStops ? 'Hide Stops' : 'Show Stops'
|
|
||||||
})
|
|
||||||
|
|
||||||
if (process.env.NODE_ENV === 'production') {
|
|
||||||
if ('serviceWorker' in navigator) {
|
|
||||||
window.addEventListener('load', () => {
|
|
||||||
navigator.serviceWorker.register('./service-worker.js').catch(() => {
|
|
||||||
}).then();
|
|
||||||
});
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
@@ -1,848 +0,0 @@
|
|||||||
53.02127,8.62516,1,Gothaer Str.,Brendel
|
|
||||||
53.02132,8.62493
|
|
||||||
53.02194,8.62227
|
|
||||||
53.02206,8.62175
|
|
||||||
53.02206,8.62175,1,Dresdener Str.
|
|
||||||
53.02206,8.62175
|
|
||||||
53.0221,8.62158
|
|
||||||
53.0222,8.62117
|
|
||||||
53.0222,8.62117
|
|
||||||
53.02252,8.62161
|
|
||||||
53.02316,8.62236
|
|
||||||
53.02333,8.62249
|
|
||||||
53.02359,8.62262
|
|
||||||
53.02373,8.62273
|
|
||||||
53.024,8.623
|
|
||||||
53.02419,8.62319
|
|
||||||
53.02419,8.62319,2,Blücherweg
|
|
||||||
53.02419,8.62319
|
|
||||||
53.02444,8.62343
|
|
||||||
53.02457,8.62356
|
|
||||||
53.02498,8.62396
|
|
||||||
53.02529,8.62426
|
|
||||||
53.02596,8.62495
|
|
||||||
53.02655,8.62551
|
|
||||||
53.02659,8.62555
|
|
||||||
53.02659,8.62555
|
|
||||||
53.02657,8.62575
|
|
||||||
53.0266,8.62592
|
|
||||||
53.02671,8.62595
|
|
||||||
53.02685,8.62592
|
|
||||||
53.02685,8.62592,3,Jenaer Str.
|
|
||||||
53.02685,8.62592
|
|
||||||
53.02695,8.62589
|
|
||||||
53.02724,8.62617
|
|
||||||
53.02749,8.62641
|
|
||||||
53.02868,8.62753
|
|
||||||
53.02873,8.62759
|
|
||||||
53.02876,8.62761
|
|
||||||
53.02893,8.62778
|
|
||||||
53.02907,8.62791
|
|
||||||
53.02928,8.62812
|
|
||||||
53.0294,8.62823
|
|
||||||
53.02945,8.62829
|
|
||||||
53.02945,8.62829
|
|
||||||
53.02939,8.62841
|
|
||||||
53.02933,8.62852
|
|
||||||
53.02912,8.62893
|
|
||||||
53.02912,8.62893,4,Overbergstr.
|
|
||||||
53.02912,8.62893
|
|
||||||
53.0291,8.62896
|
|
||||||
53.02901,8.62914
|
|
||||||
53.02895,8.62924
|
|
||||||
53.02881,8.62952
|
|
||||||
53.02873,8.62968
|
|
||||||
53.0287,8.62973
|
|
||||||
53.02864,8.62984
|
|
||||||
53.02858,8.62996
|
|
||||||
53.02799,8.63108
|
|
||||||
53.02788,8.63129
|
|
||||||
53.02785,8.63135
|
|
||||||
53.02778,8.63147
|
|
||||||
53.02778,8.63147
|
|
||||||
53.02785,8.63157
|
|
||||||
53.02789,8.63163
|
|
||||||
53.02821,8.63208
|
|
||||||
53.02821,8.63208,5,Jägerstr.
|
|
||||||
53.02821,8.63208
|
|
||||||
53.02823,8.63211
|
|
||||||
53.02843,8.6324
|
|
||||||
53.02886,8.63302
|
|
||||||
53.02933,8.63372
|
|
||||||
53.02976,8.63434
|
|
||||||
53.02986,8.63448
|
|
||||||
53.03007,8.63479
|
|
||||||
53.03016,8.63492
|
|
||||||
53.0303,8.63505
|
|
||||||
53.0304,8.63511
|
|
||||||
53.03052,8.63514
|
|
||||||
53.03062,8.63515
|
|
||||||
53.03085,8.63514
|
|
||||||
53.03085,8.63514,6,Danziger Str.
|
|
||||||
53.03085,8.63514
|
|
||||||
53.03086,8.63514
|
|
||||||
53.03153,8.63512
|
|
||||||
53.03211,8.63512
|
|
||||||
53.03225,8.63511
|
|
||||||
53.03246,8.6351
|
|
||||||
53.03251,8.6351
|
|
||||||
53.03274,8.63507
|
|
||||||
53.03298,8.63493
|
|
||||||
53.03335,8.63475
|
|
||||||
53.03338,8.63473
|
|
||||||
53.03338,8.63473,7,Görlitzer Str.
|
|
||||||
53.03338,8.63473
|
|
||||||
53.03356,8.63464
|
|
||||||
53.03437,8.63421
|
|
||||||
53.03491,8.63393
|
|
||||||
53.03509,8.63384
|
|
||||||
53.03522,8.63377
|
|
||||||
53.03522,8.63377,8,Liegnitzer Str.
|
|
||||||
53.03522,8.63377
|
|
||||||
53.03525,8.63376
|
|
||||||
53.03537,8.6337
|
|
||||||
53.03546,8.63365
|
|
||||||
53.03556,8.63359
|
|
||||||
53.0357,8.63354
|
|
||||||
53.03578,8.63349
|
|
||||||
53.03618,8.6333
|
|
||||||
53.0366,8.63307
|
|
||||||
53.0368,8.63296
|
|
||||||
53.03698,8.63282
|
|
||||||
53.03721,8.63267
|
|
||||||
53.03748,8.63254
|
|
||||||
53.03757,8.6325
|
|
||||||
53.03771,8.63243
|
|
||||||
53.03772,8.63243
|
|
||||||
53.03772,8.63243,9,Königsberger Str.
|
|
||||||
53.03772,8.63243
|
|
||||||
53.03777,8.6324
|
|
||||||
53.038,8.63228
|
|
||||||
53.03817,8.63215
|
|
||||||
53.03829,8.63202
|
|
||||||
53.03839,8.63187
|
|
||||||
53.03839,8.63187
|
|
||||||
53.03891,8.63266
|
|
||||||
53.0391,8.6329
|
|
||||||
53.03926,8.63312
|
|
||||||
53.03943,8.63338
|
|
||||||
53.03947,8.63344
|
|
||||||
53.03974,8.63382
|
|
||||||
53.03985,8.63396
|
|
||||||
53.04008,8.6343
|
|
||||||
53.04008,8.6343,10,Breslauer Str.
|
|
||||||
53.04008,8.6343
|
|
||||||
53.04016,8.6344
|
|
||||||
53.04029,8.63459
|
|
||||||
53.04041,8.63475
|
|
||||||
53.04049,8.63487
|
|
||||||
53.04078,8.63527
|
|
||||||
53.04112,8.63575
|
|
||||||
53.0413,8.63599
|
|
||||||
53.04134,8.63605
|
|
||||||
53.04142,8.63617
|
|
||||||
53.04142,8.63617
|
|
||||||
53.04151,8.63604
|
|
||||||
53.04154,8.63599
|
|
||||||
53.04164,8.63587
|
|
||||||
53.04175,8.63573
|
|
||||||
53.04269,8.63484
|
|
||||||
53.04275,8.63478
|
|
||||||
53.04296,8.63455
|
|
||||||
53.04322,8.63422
|
|
||||||
53.04378,8.63354
|
|
||||||
53.04383,8.63347
|
|
||||||
53.04393,8.63336
|
|
||||||
53.044,8.63328
|
|
||||||
53.04425,8.63306
|
|
||||||
53.04425,8.63306,12,Max-Planck-Str.
|
|
||||||
53.04425,8.63306
|
|
||||||
53.04428,8.63304
|
|
||||||
53.04484,8.63255
|
|
||||||
53.04494,8.63246
|
|
||||||
53.04499,8.63241
|
|
||||||
53.04509,8.63231
|
|
||||||
53.0452,8.63217
|
|
||||||
53.04522,8.63215
|
|
||||||
53.04526,8.6321
|
|
||||||
53.04537,8.63195
|
|
||||||
53.04548,8.63181
|
|
||||||
53.04564,8.63159
|
|
||||||
53.04581,8.63138
|
|
||||||
53.04599,8.63115
|
|
||||||
53.04617,8.6309
|
|
||||||
53.04623,8.63082
|
|
||||||
53.04637,8.63064
|
|
||||||
53.04649,8.63044
|
|
||||||
53.04656,8.63034
|
|
||||||
53.04676,8.62994
|
|
||||||
53.04684,8.62973
|
|
||||||
53.04684,8.62973,13,Parkstr.
|
|
||||||
53.04684,8.62973
|
|
||||||
53.04701,8.62932
|
|
||||||
53.04711,8.62907
|
|
||||||
53.04719,8.62886
|
|
||||||
53.0473,8.62861
|
|
||||||
53.04732,8.62854
|
|
||||||
53.04736,8.62841
|
|
||||||
53.04739,8.62828
|
|
||||||
53.04748,8.62789
|
|
||||||
53.04754,8.62752
|
|
||||||
53.04762,8.62721
|
|
||||||
53.04767,8.62708
|
|
||||||
53.04776,8.62686
|
|
||||||
53.04776,8.62686
|
|
||||||
53.04785,8.627
|
|
||||||
53.04794,8.6271
|
|
||||||
53.04794,8.6271,14,Markt
|
|
||||||
53.04794,8.6271
|
|
||||||
53.04802,8.62718
|
|
||||||
53.04806,8.62722
|
|
||||||
53.04811,8.62727
|
|
||||||
53.04823,8.62738
|
|
||||||
53.04836,8.62753
|
|
||||||
53.0484,8.62758
|
|
||||||
53.04847,8.6277
|
|
||||||
53.04855,8.62779
|
|
||||||
53.04867,8.62792
|
|
||||||
53.04875,8.62796
|
|
||||||
53.04882,8.62795
|
|
||||||
53.04892,8.6279
|
|
||||||
53.049,8.62777
|
|
||||||
53.04908,8.62749
|
|
||||||
53.04912,8.62734
|
|
||||||
53.04912,8.6273
|
|
||||||
53.04915,8.62717
|
|
||||||
53.04919,8.6269
|
|
||||||
53.0492,8.62683
|
|
||||||
53.04921,8.62678
|
|
||||||
53.04922,8.62637
|
|
||||||
53.04921,8.62613
|
|
||||||
53.04921,8.62595
|
|
||||||
53.04918,8.62555
|
|
||||||
53.04918,8.62548
|
|
||||||
53.04917,8.6253
|
|
||||||
53.04917,8.6253
|
|
||||||
53.04932,8.62526
|
|
||||||
53.04993,8.62514
|
|
||||||
53.05019,8.6251
|
|
||||||
53.05019,8.6251,15,Post
|
|
||||||
53.05019,8.6251
|
|
||||||
53.05057,8.62501
|
|
||||||
53.05124,8.62472
|
|
||||||
53.05165,8.62455
|
|
||||||
53.05165,8.62455
|
|
||||||
53.05166,8.62476
|
|
||||||
53.05169,8.62506
|
|
||||||
53.0517,8.62519
|
|
||||||
53.05175,8.62573
|
|
||||||
53.0518,8.62629
|
|
||||||
53.05181,8.62642
|
|
||||||
53.05183,8.62659
|
|
||||||
53.05183,8.62666
|
|
||||||
53.05184,8.62677
|
|
||||||
53.05185,8.62687
|
|
||||||
53.05193,8.6278
|
|
||||||
53.05195,8.62804
|
|
||||||
53.05195,8.62822
|
|
||||||
53.05193,8.62839
|
|
||||||
53.05188,8.62865
|
|
||||||
53.05187,8.62872
|
|
||||||
53.05184,8.62888
|
|
||||||
53.05183,8.62913
|
|
||||||
53.05187,8.62966
|
|
||||||
53.05187,8.62966,18,Bahnhof / ZOB
|
|
||||||
53.05187,8.62966,24,Bahnhof / ZOB
|
|
||||||
53.05187,8.62966
|
|
||||||
53.05188,8.62983
|
|
||||||
53.05194,8.63053
|
|
||||||
53.05198,8.631
|
|
||||||
53.05203,8.63172
|
|
||||||
53.0521,8.63238
|
|
||||||
53.05215,8.63304
|
|
||||||
53.05216,8.63313
|
|
||||||
53.05218,8.63322
|
|
||||||
53.05218,8.63322
|
|
||||||
53.05222,8.6334
|
|
||||||
53.05261,8.63323
|
|
||||||
53.05271,8.63318
|
|
||||||
53.05329,8.63291
|
|
||||||
53.05329,8.63291
|
|
||||||
53.05419,8.63246
|
|
||||||
53.05419,8.63246,26,Am Wollepark
|
|
||||||
53.05419,8.63246
|
|
||||||
53.05422,8.63245
|
|
||||||
53.055,8.6321
|
|
||||||
53.05516,8.63203
|
|
||||||
53.05551,8.6319
|
|
||||||
53.05554,8.63188
|
|
||||||
53.05557,8.63188
|
|
||||||
53.05571,8.63183
|
|
||||||
53.05585,8.63179
|
|
||||||
53.05587,8.63178
|
|
||||||
53.0559,8.63177
|
|
||||||
53.05598,8.63167
|
|
||||||
53.05607,8.63165
|
|
||||||
53.05619,8.63162
|
|
||||||
53.05703,8.63143
|
|
||||||
53.05743,8.63134
|
|
||||||
53.05776,8.63126
|
|
||||||
53.05776,8.63126,27,Thüringer Str.
|
|
||||||
53.05776,8.63126
|
|
||||||
53.05783,8.63125
|
|
||||||
53.05795,8.63122
|
|
||||||
53.05808,8.63119
|
|
||||||
53.05872,8.63105
|
|
||||||
53.05906,8.63097
|
|
||||||
53.05908,8.63097
|
|
||||||
53.05925,8.63094
|
|
||||||
53.0596,8.63086
|
|
||||||
53.06006,8.63076
|
|
||||||
53.06023,8.63072
|
|
||||||
53.06023,8.63072,27,Schönemoorer Str.
|
|
||||||
53.06023,8.63072
|
|
||||||
53.06025,8.63072
|
|
||||||
53.06034,8.6307
|
|
||||||
53.06043,8.63068
|
|
||||||
53.06063,8.63063
|
|
||||||
53.06089,8.63057
|
|
||||||
53.06113,8.63052
|
|
||||||
53.06159,8.63045
|
|
||||||
53.06173,8.63046
|
|
||||||
53.06186,8.63049
|
|
||||||
53.06197,8.63056
|
|
||||||
53.06221,8.63077
|
|
||||||
53.0629,8.63137
|
|
||||||
53.06309,8.6315
|
|
||||||
53.06323,8.63161
|
|
||||||
53.06364,8.63195
|
|
||||||
53.06364,8.63195,28,Hansastr.
|
|
||||||
53.06364,8.63195
|
|
||||||
53.0637,8.632
|
|
||||||
53.06437,8.63256
|
|
||||||
53.06529,8.63332
|
|
||||||
53.0656,8.63357
|
|
||||||
53.0659,8.63383
|
|
||||||
53.0659,8.63383
|
|
||||||
53.06586,8.63322
|
|
||||||
53.0658,8.63241
|
|
||||||
53.0658,8.63241,29,Nordstr.
|
|
||||||
53.0658,8.63241
|
|
||||||
53.06565,8.63024
|
|
||||||
53.06556,8.62908
|
|
||||||
53.06552,8.62867
|
|
||||||
53.06552,8.62867,30,Lessingstr.
|
|
||||||
53.06552,8.62867
|
|
||||||
53.06552,8.62863
|
|
||||||
53.06549,8.62818
|
|
||||||
53.06549,8.62818
|
|
||||||
53.06594,8.62811
|
|
||||||
53.0663,8.62807
|
|
||||||
53.06667,8.62803
|
|
||||||
53.0668,8.62804
|
|
||||||
53.06714,8.62811
|
|
||||||
53.06819,8.62835
|
|
||||||
53.06829,8.62838
|
|
||||||
53.06852,8.62843
|
|
||||||
53.06874,8.62848
|
|
||||||
53.06874,8.62848,31,Andersenstr.
|
|
||||||
53.06874,8.62848
|
|
||||||
53.06887,8.62851
|
|
||||||
53.06983,8.62874
|
|
||||||
53.07045,8.62889
|
|
||||||
53.07062,8.62893
|
|
||||||
53.07062,8.62893,31,Kleistweg
|
|
||||||
53.07062,8.62893
|
|
||||||
53.07066,8.62893
|
|
||||||
53.07078,8.62897
|
|
||||||
53.07092,8.629
|
|
||||||
53.07098,8.62901
|
|
||||||
53.07135,8.6291
|
|
||||||
53.07185,8.62921
|
|
||||||
53.07224,8.6293
|
|
||||||
53.07268,8.6294
|
|
||||||
53.07268,8.6294
|
|
||||||
53.07265,8.63001
|
|
||||||
53.07265,8.63001,32,Gorch-Fock-Str.
|
|
||||||
53.07265,8.63001
|
|
||||||
53.07264,8.63009
|
|
||||||
53.07263,8.6305
|
|
||||||
53.07261,8.63082
|
|
||||||
53.07258,8.6315
|
|
||||||
53.0725,8.63359
|
|
||||||
53.07243,8.63491
|
|
||||||
53.07241,8.63565
|
|
||||||
53.0724,8.63584
|
|
||||||
53.0724,8.63584,33,Friedhof
|
|
||||||
53.0724,8.63584
|
|
||||||
53.0724,8.63589
|
|
||||||
53.07237,8.63638
|
|
||||||
53.07237,8.63646
|
|
||||||
53.07233,8.63722
|
|
||||||
53.07232,8.63758
|
|
||||||
53.07226,8.63883
|
|
||||||
53.07224,8.63919
|
|
||||||
53.07224,8.63922
|
|
||||||
53.07224,8.63922,33,Brauereiweg
|
|
||||||
53.07224,8.63922
|
|
||||||
53.07222,8.63967
|
|
||||||
53.07217,8.63997
|
|
||||||
53.0721,8.64015
|
|
||||||
53.0721,8.64015
|
|
||||||
53.07215,8.6402
|
|
||||||
53.07233,8.64039
|
|
||||||
53.07264,8.64073
|
|
||||||
53.07285,8.64095
|
|
||||||
53.07313,8.64124
|
|
||||||
53.07327,8.64139
|
|
||||||
53.07369,8.64177
|
|
||||||
53.07396,8.64198
|
|
||||||
53.07403,8.64202
|
|
||||||
53.07425,8.64218
|
|
||||||
53.07454,8.64237
|
|
||||||
53.07468,8.64246
|
|
||||||
53.07468,8.64246,34,Bungerhof
|
|
||||||
53.07552,8.64303,50,Bungerhof,Bungerhof
|
|
||||||
53.07552,8.64303
|
|
||||||
53.07501,8.64269
|
|
||||||
53.07484,8.64257
|
|
||||||
53.07476,8.64251
|
|
||||||
53.0747,8.64247
|
|
||||||
53.07454,8.64237
|
|
||||||
53.07425,8.64218
|
|
||||||
53.07403,8.64202
|
|
||||||
53.07396,8.64198
|
|
||||||
53.07369,8.64177
|
|
||||||
53.07327,8.64139
|
|
||||||
53.07313,8.64124
|
|
||||||
53.07285,8.64095
|
|
||||||
53.07264,8.64073
|
|
||||||
53.07233,8.64039
|
|
||||||
53.07215,8.6402
|
|
||||||
53.0721,8.64015
|
|
||||||
53.0721,8.64015
|
|
||||||
53.07217,8.63997
|
|
||||||
53.07222,8.63967
|
|
||||||
53.07224,8.63919
|
|
||||||
53.07224,8.63915
|
|
||||||
53.07224,8.63915,51,Brauereiweg
|
|
||||||
53.07224,8.63915
|
|
||||||
53.07226,8.63883
|
|
||||||
53.07232,8.63758
|
|
||||||
53.07233,8.63722
|
|
||||||
53.07237,8.63646
|
|
||||||
53.07237,8.63638
|
|
||||||
53.07239,8.63596
|
|
||||||
53.07239,8.63596,52,Friedhof
|
|
||||||
53.07239,8.63596
|
|
||||||
53.0724,8.63589
|
|
||||||
53.07241,8.63565
|
|
||||||
53.07243,8.63491
|
|
||||||
53.0725,8.63359
|
|
||||||
53.07258,8.6315
|
|
||||||
53.07261,8.63083
|
|
||||||
53.07261,8.63083,53,Gorch-Fock-Str.
|
|
||||||
53.07261,8.63082
|
|
||||||
53.07263,8.6305
|
|
||||||
53.07264,8.63009
|
|
||||||
53.07268,8.6294
|
|
||||||
53.07268,8.6294
|
|
||||||
53.07224,8.6293
|
|
||||||
53.07185,8.62921
|
|
||||||
53.07135,8.6291
|
|
||||||
53.07098,8.62901
|
|
||||||
53.07098,8.62901,53,Kleistweg
|
|
||||||
53.07098,8.62901
|
|
||||||
53.07092,8.629
|
|
||||||
53.07078,8.62897
|
|
||||||
53.07066,8.62893
|
|
||||||
53.07045,8.62889
|
|
||||||
53.06983,8.62874
|
|
||||||
53.06887,8.62851
|
|
||||||
53.06874,8.62848
|
|
||||||
53.06852,8.62843
|
|
||||||
53.06831,8.62838
|
|
||||||
53.06831,8.62838,54,Andersenstr.
|
|
||||||
53.06831,8.62838
|
|
||||||
53.06829,8.62838
|
|
||||||
53.06819,8.62835
|
|
||||||
53.06714,8.62811
|
|
||||||
53.0668,8.62804
|
|
||||||
53.06667,8.62803
|
|
||||||
53.0663,8.62807
|
|
||||||
53.06594,8.62811
|
|
||||||
53.06549,8.62818
|
|
||||||
53.06549,8.62818
|
|
||||||
53.06552,8.62863
|
|
||||||
53.06556,8.62908
|
|
||||||
53.06556,8.62908,55,Lessingstr.
|
|
||||||
53.06556,8.62909
|
|
||||||
53.06565,8.63024
|
|
||||||
53.0658,8.63241
|
|
||||||
53.06586,8.63322
|
|
||||||
53.06586,8.63322
|
|
||||||
53.06581,8.63339
|
|
||||||
53.06577,8.63347
|
|
||||||
53.06572,8.63352
|
|
||||||
53.0656,8.63357
|
|
||||||
53.06531,8.63334
|
|
||||||
53.06531,8.63334,56,Nordstr.
|
|
||||||
53.06531,8.63334
|
|
||||||
53.06529,8.63332
|
|
||||||
53.06437,8.63256
|
|
||||||
53.0637,8.632
|
|
||||||
53.06323,8.63161
|
|
||||||
53.06311,8.63152
|
|
||||||
53.06311,8.63152,57,Hansastr.
|
|
||||||
53.06311,8.63152
|
|
||||||
53.06309,8.6315
|
|
||||||
53.0629,8.63137
|
|
||||||
53.06221,8.63077
|
|
||||||
53.06197,8.63056
|
|
||||||
53.06186,8.63049
|
|
||||||
53.06173,8.63046
|
|
||||||
53.06159,8.63045
|
|
||||||
53.06113,8.63052
|
|
||||||
53.06089,8.63057
|
|
||||||
53.06089,8.63057,58,Schönemoorer Str.
|
|
||||||
53.06088,8.63057
|
|
||||||
53.06063,8.63063
|
|
||||||
53.06043,8.63068
|
|
||||||
53.06034,8.6307
|
|
||||||
53.06025,8.63072
|
|
||||||
53.06006,8.63076
|
|
||||||
53.0596,8.63086
|
|
||||||
53.05925,8.63094
|
|
||||||
53.05908,8.63097
|
|
||||||
53.05906,8.63097
|
|
||||||
53.05872,8.63105
|
|
||||||
53.05808,8.63119
|
|
||||||
53.05795,8.63122
|
|
||||||
53.05783,8.63125
|
|
||||||
53.05776,8.63126
|
|
||||||
53.05743,8.63134
|
|
||||||
53.05703,8.63143
|
|
||||||
53.05703,8.63143,59,Thüringer Str.
|
|
||||||
53.05702,8.63143
|
|
||||||
53.05619,8.63162
|
|
||||||
53.05607,8.63165
|
|
||||||
53.05598,8.63167
|
|
||||||
53.05591,8.63166
|
|
||||||
53.05587,8.63165
|
|
||||||
53.05585,8.63166
|
|
||||||
53.0557,8.63171
|
|
||||||
53.05555,8.63176
|
|
||||||
53.05553,8.63176
|
|
||||||
53.05531,8.63183
|
|
||||||
53.05483,8.63204
|
|
||||||
53.05423,8.63231
|
|
||||||
53.05423,8.63231,60,Am Wollepark
|
|
||||||
53.05423,8.63231
|
|
||||||
53.0542,8.63232
|
|
||||||
53.05378,8.6325
|
|
||||||
53.05328,8.63273
|
|
||||||
53.05299,8.63286
|
|
||||||
53.05299,8.63286
|
|
||||||
53.05284,8.63284
|
|
||||||
53.05277,8.63279
|
|
||||||
53.05271,8.6327
|
|
||||||
53.05266,8.63257
|
|
||||||
53.05265,8.63245
|
|
||||||
53.05264,8.63232
|
|
||||||
53.05256,8.63133
|
|
||||||
53.05257,8.63106
|
|
||||||
53.05255,8.6308
|
|
||||||
53.05245,8.62968
|
|
||||||
53.05245,8.62968,63,Bahnhof / ZOB
|
|
||||||
53.05245,8.62968,69,Bahnhof / ZOB
|
|
||||||
53.05245,8.62967
|
|
||||||
53.05237,8.62853
|
|
||||||
53.05232,8.62787
|
|
||||||
53.05218,8.62639
|
|
||||||
53.05217,8.62624
|
|
||||||
53.05208,8.62501
|
|
||||||
53.05208,8.62501
|
|
||||||
53.05198,8.6248
|
|
||||||
53.0519,8.62466
|
|
||||||
53.05177,8.62449
|
|
||||||
53.05177,8.62449
|
|
||||||
53.05165,8.62455
|
|
||||||
53.05126,8.62471
|
|
||||||
53.05126,8.62471,70,Post
|
|
||||||
53.05126,8.62471
|
|
||||||
53.05124,8.62472
|
|
||||||
53.05057,8.62501
|
|
||||||
53.05019,8.6251
|
|
||||||
53.04993,8.62514
|
|
||||||
53.04993,8.62514
|
|
||||||
53.04932,8.62526
|
|
||||||
53.04917,8.6253
|
|
||||||
53.04913,8.62531
|
|
||||||
53.04907,8.62532
|
|
||||||
53.04901,8.62533
|
|
||||||
53.04864,8.62542
|
|
||||||
53.04852,8.62547
|
|
||||||
53.04852,8.62547
|
|
||||||
53.04836,8.62551
|
|
||||||
53.04824,8.62563
|
|
||||||
53.04815,8.62575
|
|
||||||
53.04807,8.62588
|
|
||||||
53.04801,8.62603
|
|
||||||
53.0477,8.62679
|
|
||||||
53.0477,8.62679
|
|
||||||
53.04776,8.62686
|
|
||||||
53.04785,8.627
|
|
||||||
53.04802,8.62718
|
|
||||||
53.04806,8.62722
|
|
||||||
53.04811,8.62727
|
|
||||||
53.04823,8.62738
|
|
||||||
53.04836,8.62753
|
|
||||||
53.0484,8.62758
|
|
||||||
53.04844,8.62765
|
|
||||||
53.04844,8.62765,73,Markt
|
|
||||||
53.04844,8.62765
|
|
||||||
53.04847,8.6277
|
|
||||||
53.04855,8.62779
|
|
||||||
53.04867,8.62792
|
|
||||||
53.04875,8.62796
|
|
||||||
53.04882,8.62795
|
|
||||||
53.04892,8.6279
|
|
||||||
53.049,8.62777
|
|
||||||
53.04908,8.62749
|
|
||||||
53.04912,8.62734
|
|
||||||
53.04912,8.6273
|
|
||||||
53.04915,8.62717
|
|
||||||
53.04919,8.6269
|
|
||||||
53.0492,8.62683
|
|
||||||
53.04921,8.62678
|
|
||||||
53.04922,8.62637
|
|
||||||
53.04921,8.62613
|
|
||||||
53.04921,8.62595
|
|
||||||
53.04918,8.62555
|
|
||||||
53.04918,8.62548
|
|
||||||
53.04917,8.6253
|
|
||||||
53.04917,8.6253
|
|
||||||
53.04913,8.62531
|
|
||||||
53.04907,8.62532
|
|
||||||
53.04901,8.62533
|
|
||||||
53.04864,8.62542
|
|
||||||
53.04852,8.62547
|
|
||||||
53.04852,8.62547
|
|
||||||
53.04836,8.62551
|
|
||||||
53.04824,8.62563
|
|
||||||
53.04815,8.62575
|
|
||||||
53.04807,8.62588
|
|
||||||
53.04801,8.62603
|
|
||||||
53.0477,8.62679
|
|
||||||
53.0477,8.62679
|
|
||||||
53.04763,8.62698
|
|
||||||
53.04757,8.62713
|
|
||||||
53.04751,8.62732
|
|
||||||
53.04743,8.62769
|
|
||||||
53.04734,8.62822
|
|
||||||
53.04734,8.62822
|
|
||||||
53.04731,8.62835
|
|
||||||
53.04728,8.62851
|
|
||||||
53.04726,8.62861
|
|
||||||
53.04719,8.62886
|
|
||||||
53.04711,8.62907
|
|
||||||
53.04701,8.62932
|
|
||||||
53.04684,8.62973
|
|
||||||
53.04684,8.62973,75,Parkstr.
|
|
||||||
53.04684,8.62973
|
|
||||||
53.04676,8.62994
|
|
||||||
53.04656,8.63034
|
|
||||||
53.04649,8.63044
|
|
||||||
53.04637,8.63064
|
|
||||||
53.04623,8.63082
|
|
||||||
53.04617,8.6309
|
|
||||||
53.04599,8.63115
|
|
||||||
53.04581,8.63138
|
|
||||||
53.04564,8.63159
|
|
||||||
53.04548,8.63181
|
|
||||||
53.04537,8.63195
|
|
||||||
53.04526,8.6321
|
|
||||||
53.04522,8.63215
|
|
||||||
53.0452,8.63217
|
|
||||||
53.04509,8.63231
|
|
||||||
53.04499,8.63241
|
|
||||||
53.04494,8.63246
|
|
||||||
53.04484,8.63255
|
|
||||||
53.04428,8.63304
|
|
||||||
53.044,8.63328
|
|
||||||
53.04393,8.63336
|
|
||||||
53.04383,8.63347
|
|
||||||
53.04378,8.63354
|
|
||||||
53.04324,8.63419
|
|
||||||
53.04324,8.63419,77,Max-Planck-Str.
|
|
||||||
53.04324,8.63419
|
|
||||||
53.04322,8.63422
|
|
||||||
53.04296,8.63455
|
|
||||||
53.04275,8.63478
|
|
||||||
53.04269,8.63484
|
|
||||||
53.04175,8.63573
|
|
||||||
53.04164,8.63587
|
|
||||||
53.04154,8.63599
|
|
||||||
53.04151,8.63604
|
|
||||||
53.04142,8.63617
|
|
||||||
53.04142,8.63617
|
|
||||||
53.04134,8.63605
|
|
||||||
53.0413,8.63599
|
|
||||||
53.04112,8.63575
|
|
||||||
53.04078,8.63527
|
|
||||||
53.04049,8.63487
|
|
||||||
53.04041,8.63475
|
|
||||||
53.04029,8.63459
|
|
||||||
53.04016,8.6344
|
|
||||||
53.03993,8.63408
|
|
||||||
53.03993,8.63408,78,Breslauer Str.
|
|
||||||
53.03993,8.63408
|
|
||||||
53.03985,8.63396
|
|
||||||
53.03974,8.63382
|
|
||||||
53.03947,8.63344
|
|
||||||
53.03943,8.63338
|
|
||||||
53.03926,8.63312
|
|
||||||
53.0391,8.6329
|
|
||||||
53.03891,8.63266
|
|
||||||
53.03839,8.63187
|
|
||||||
53.03839,8.63187
|
|
||||||
53.03829,8.63202
|
|
||||||
53.03817,8.63215
|
|
||||||
53.038,8.63228
|
|
||||||
53.03777,8.6324
|
|
||||||
53.03771,8.63243
|
|
||||||
53.03771,8.63243,79,Königsberger Str.
|
|
||||||
53.03771,8.63243
|
|
||||||
53.03757,8.6325
|
|
||||||
53.03748,8.63254
|
|
||||||
53.03721,8.63267
|
|
||||||
53.03698,8.63282
|
|
||||||
53.0368,8.63296
|
|
||||||
53.0366,8.63307
|
|
||||||
53.03618,8.6333
|
|
||||||
53.03578,8.63349
|
|
||||||
53.0357,8.63354
|
|
||||||
53.03556,8.63359
|
|
||||||
53.03546,8.63365
|
|
||||||
53.03537,8.6337
|
|
||||||
53.03525,8.63376
|
|
||||||
53.03509,8.63383
|
|
||||||
53.03509,8.63383,80,Liegnitzer Str.
|
|
||||||
53.03509,8.63384
|
|
||||||
53.03491,8.63393
|
|
||||||
53.03437,8.63421
|
|
||||||
53.03356,8.63464
|
|
||||||
53.03335,8.63475
|
|
||||||
53.03332,8.63476
|
|
||||||
53.03332,8.63476,81,Görlitzer Str.
|
|
||||||
53.03332,8.63476
|
|
||||||
53.03298,8.63493
|
|
||||||
53.03274,8.63507
|
|
||||||
53.03251,8.6351
|
|
||||||
53.03246,8.6351
|
|
||||||
53.03225,8.63511
|
|
||||||
53.03211,8.63512
|
|
||||||
53.03153,8.63512
|
|
||||||
53.03087,8.63514
|
|
||||||
53.03087,8.63514,81,Danziger Str.
|
|
||||||
53.03086,8.63514
|
|
||||||
53.03062,8.63515
|
|
||||||
53.03052,8.63514
|
|
||||||
53.0304,8.63511
|
|
||||||
53.0303,8.63505
|
|
||||||
53.03016,8.63492
|
|
||||||
53.03007,8.63479
|
|
||||||
53.02986,8.63448
|
|
||||||
53.02976,8.63434
|
|
||||||
53.02933,8.63372
|
|
||||||
53.02886,8.63302
|
|
||||||
53.02843,8.6324
|
|
||||||
53.02823,8.63211
|
|
||||||
53.02789,8.63163
|
|
||||||
53.02785,8.63157
|
|
||||||
53.02778,8.63147
|
|
||||||
53.02778,8.63147
|
|
||||||
53.02785,8.63135
|
|
||||||
53.02788,8.63129
|
|
||||||
53.02797,8.63111
|
|
||||||
53.02797,8.63111,82,Jägerstr.
|
|
||||||
53.02797,8.63111
|
|
||||||
53.02799,8.63108
|
|
||||||
53.02858,8.62996
|
|
||||||
53.02864,8.62984
|
|
||||||
53.0287,8.62973
|
|
||||||
53.02873,8.62968
|
|
||||||
53.02881,8.62952
|
|
||||||
53.02895,8.62924
|
|
||||||
53.02901,8.62914
|
|
||||||
53.02909,8.62899
|
|
||||||
53.02909,8.62899,83,Overbergstr.
|
|
||||||
53.02909,8.62899
|
|
||||||
53.0291,8.62896
|
|
||||||
53.02933,8.62852
|
|
||||||
53.02939,8.62841
|
|
||||||
53.02945,8.62829
|
|
||||||
53.02945,8.62829
|
|
||||||
53.0294,8.62823
|
|
||||||
53.02928,8.62812
|
|
||||||
53.02907,8.62791
|
|
||||||
53.02893,8.62778
|
|
||||||
53.02876,8.62761
|
|
||||||
53.02873,8.62759
|
|
||||||
53.02868,8.62753
|
|
||||||
53.02749,8.62641
|
|
||||||
53.02724,8.62617
|
|
||||||
53.02695,8.62589
|
|
||||||
53.02688,8.62583
|
|
||||||
53.02688,8.62583,84,Jenaer Str.
|
|
||||||
53.02688,8.62583
|
|
||||||
53.02659,8.62555
|
|
||||||
53.02655,8.62551
|
|
||||||
53.02596,8.62495
|
|
||||||
53.02596,8.62495
|
|
||||||
53.02584,8.62528
|
|
||||||
53.02574,8.62529
|
|
||||||
53.02565,8.62536
|
|
||||||
53.02516,8.62665
|
|
||||||
53.0249,8.62738
|
|
||||||
53.02447,8.62855
|
|
||||||
53.02447,8.62855
|
|
||||||
53.02438,8.62847
|
|
||||||
53.02435,8.62844
|
|
||||||
53.02411,8.62823
|
|
||||||
53.02411,8.62823,86,Chemnitzer Str.
|
|
||||||
53.02411,8.62823
|
|
||||||
53.02388,8.62803
|
|
||||||
53.02365,8.62783
|
|
||||||
53.02344,8.62764
|
|
||||||
53.0233,8.62752
|
|
||||||
53.02312,8.62741
|
|
||||||
53.0229,8.6274
|
|
||||||
53.02272,8.62749
|
|
||||||
53.02255,8.62764
|
|
||||||
53.02247,8.62782
|
|
||||||
53.02239,8.62799
|
|
||||||
53.02212,8.62871
|
|
||||||
53.02203,8.62896
|
|
||||||
53.02189,8.62929
|
|
||||||
53.02189,8.62929,86,Altenburger Str.
|
|
||||||
53.02189,8.62929
|
|
||||||
53.02189,8.62931
|
|
||||||
53.02176,8.62964
|
|
||||||
53.02166,8.62985
|
|
||||||
53.02154,8.63001
|
|
||||||
53.02136,8.63019
|
|
||||||
53.02136,8.63019
|
|
||||||
53.02124,8.62987
|
|
||||||
53.02101,8.62929
|
|
||||||
53.02076,8.62863
|
|
||||||
53.02066,8.62838
|
|
||||||
53.02063,8.62829
|
|
||||||
53.0206,8.62821
|
|
||||||
53.02059,8.6281
|
|
||||||
53.02059,8.6281
|
|
||||||
53.02105,8.62611
|
|
||||||
53.02124,8.62529
|
|
||||||
53.02126,8.62521
|
|
||||||
53.02127,8.62516,88,Gothaer Str.
|
|
||||||
53.02127,8.62516,90,Gothaer Str.
|
|
||||||
|
@@ -1,766 +0,0 @@
|
|||||||
53.07553,8.64303,5,Bungerhof,Bungerhof
|
|
||||||
53.07501,8.64269
|
|
||||||
53.07484,8.64257
|
|
||||||
53.07476,8.64251
|
|
||||||
53.0747,8.64247
|
|
||||||
53.07454,8.64237
|
|
||||||
53.07425,8.64218
|
|
||||||
53.07403,8.64202
|
|
||||||
53.07396,8.64198
|
|
||||||
53.07369,8.64177
|
|
||||||
53.07327,8.64139
|
|
||||||
53.07313,8.64124
|
|
||||||
53.07285,8.64095
|
|
||||||
53.07264,8.64073
|
|
||||||
53.07233,8.64039
|
|
||||||
53.07215,8.6402
|
|
||||||
53.0721,8.64015
|
|
||||||
53.0721,8.64015
|
|
||||||
53.07217,8.63997
|
|
||||||
53.07222,8.63967
|
|
||||||
53.07224,8.63919
|
|
||||||
53.07225,8.63914
|
|
||||||
53.07225,8.63914,6,Brauereiweg
|
|
||||||
53.07225,8.63914
|
|
||||||
53.07226,8.63883
|
|
||||||
53.07232,8.63758
|
|
||||||
53.07233,8.63722
|
|
||||||
53.07237,8.63646
|
|
||||||
53.07237,8.63638
|
|
||||||
53.07239,8.63594
|
|
||||||
53.07239,8.63594,7,Friedhof
|
|
||||||
53.07239,8.63594
|
|
||||||
53.0724,8.63589
|
|
||||||
53.07241,8.63565
|
|
||||||
53.07243,8.63491
|
|
||||||
53.0725,8.63359
|
|
||||||
53.07258,8.6315
|
|
||||||
53.07261,8.63083
|
|
||||||
53.07261,8.63083,8,Gorch-Fock-Str.
|
|
||||||
53.07261,8.63082
|
|
||||||
53.07263,8.6305
|
|
||||||
53.07264,8.63009
|
|
||||||
53.07268,8.6294
|
|
||||||
53.07268,8.62921
|
|
||||||
53.07271,8.62863
|
|
||||||
53.07274,8.62804
|
|
||||||
53.07276,8.62752
|
|
||||||
53.07279,8.62656
|
|
||||||
53.0728,8.62635
|
|
||||||
53.07281,8.62615
|
|
||||||
53.07281,8.62615,8,Hebbelweg
|
|
||||||
53.07281,8.62615
|
|
||||||
53.07284,8.62565
|
|
||||||
53.07291,8.62485
|
|
||||||
53.07302,8.62369
|
|
||||||
53.07334,8.62183
|
|
||||||
53.07335,8.62162
|
|
||||||
53.07335,8.62162
|
|
||||||
53.07325,8.62164
|
|
||||||
53.07304,8.62168
|
|
||||||
53.07301,8.62168
|
|
||||||
53.07301,8.62168,9,Friedensstr.
|
|
||||||
53.07301,8.62168
|
|
||||||
53.07251,8.62177
|
|
||||||
53.07179,8.62192
|
|
||||||
53.07076,8.62213
|
|
||||||
53.07051,8.62217
|
|
||||||
53.07048,8.62218
|
|
||||||
53.07036,8.6222
|
|
||||||
53.06957,8.62231
|
|
||||||
53.06952,8.62232
|
|
||||||
53.06945,8.62233
|
|
||||||
53.06912,8.62237
|
|
||||||
53.06879,8.62244
|
|
||||||
53.06879,8.62244,10,Scheffelstr.
|
|
||||||
53.06879,8.62244
|
|
||||||
53.06877,8.62244
|
|
||||||
53.06827,8.62253
|
|
||||||
53.06808,8.62257
|
|
||||||
53.06756,8.62266
|
|
||||||
53.06731,8.62271
|
|
||||||
53.0667,8.62284
|
|
||||||
53.06596,8.62299
|
|
||||||
53.06583,8.62302
|
|
||||||
53.06562,8.62306
|
|
||||||
53.06507,8.62318
|
|
||||||
53.06453,8.62331
|
|
||||||
53.06444,8.62333
|
|
||||||
53.06433,8.62338
|
|
||||||
53.06421,8.62345
|
|
||||||
53.06409,8.62357
|
|
||||||
53.06409,8.62357,11,Dwostr.
|
|
||||||
53.06409,8.62357
|
|
||||||
53.06402,8.62364
|
|
||||||
53.06385,8.62393
|
|
||||||
53.06378,8.62408
|
|
||||||
53.06377,8.62411
|
|
||||||
53.06324,8.62532
|
|
||||||
53.06317,8.62548
|
|
||||||
53.06317,8.62548,12,Rilkeweg
|
|
||||||
53.06317,8.62548
|
|
||||||
53.06316,8.6255
|
|
||||||
53.06303,8.6258
|
|
||||||
53.06264,8.62667
|
|
||||||
53.06192,8.62834
|
|
||||||
53.06189,8.62841
|
|
||||||
53.06153,8.62922
|
|
||||||
53.06134,8.62963
|
|
||||||
53.06123,8.62987
|
|
||||||
53.06111,8.63011
|
|
||||||
53.06111,8.63029
|
|
||||||
53.06113,8.63052
|
|
||||||
53.06113,8.63052
|
|
||||||
53.06089,8.63057
|
|
||||||
53.06089,8.63057,13,Schönemoorer Str.
|
|
||||||
53.06089,8.63057
|
|
||||||
53.06063,8.63063
|
|
||||||
53.06043,8.63068
|
|
||||||
53.06034,8.6307
|
|
||||||
53.06025,8.63072
|
|
||||||
53.06006,8.63076
|
|
||||||
53.0596,8.63086
|
|
||||||
53.05925,8.63094
|
|
||||||
53.05908,8.63097
|
|
||||||
53.05906,8.63097
|
|
||||||
53.05872,8.63105
|
|
||||||
53.05808,8.63119
|
|
||||||
53.05795,8.63122
|
|
||||||
53.05783,8.63125
|
|
||||||
53.05776,8.63126
|
|
||||||
53.05743,8.63134
|
|
||||||
53.05703,8.63143
|
|
||||||
53.05702,8.63144
|
|
||||||
53.05702,8.63144,14,Thüringer Str.
|
|
||||||
53.05702,8.63144
|
|
||||||
53.05619,8.63162
|
|
||||||
53.05607,8.63165
|
|
||||||
53.05598,8.63167
|
|
||||||
53.05591,8.63166
|
|
||||||
53.05587,8.63165
|
|
||||||
53.05585,8.63166
|
|
||||||
53.0557,8.63171
|
|
||||||
53.05555,8.63176
|
|
||||||
53.05553,8.63176
|
|
||||||
53.05531,8.63183
|
|
||||||
53.05483,8.63204
|
|
||||||
53.05424,8.6323
|
|
||||||
53.05424,8.6323,15,Am Wollepark
|
|
||||||
53.05424,8.6323
|
|
||||||
53.0542,8.63232
|
|
||||||
53.05378,8.6325
|
|
||||||
53.05328,8.63273
|
|
||||||
53.05299,8.63286
|
|
||||||
53.05299,8.63286
|
|
||||||
53.05284,8.63284
|
|
||||||
53.05277,8.63279
|
|
||||||
53.05271,8.6327
|
|
||||||
53.05266,8.63257
|
|
||||||
53.05265,8.63245
|
|
||||||
53.05264,8.63232
|
|
||||||
53.05256,8.63133
|
|
||||||
53.05257,8.63106
|
|
||||||
53.05255,8.6308
|
|
||||||
53.05245,8.62968
|
|
||||||
53.05245,8.62968,18,Bahnhof / ZOB J
|
|
||||||
53.05245,8.62968,24,Bahnhof / ZOB J
|
|
||||||
53.05245,8.62966
|
|
||||||
53.05237,8.62853
|
|
||||||
53.05232,8.62787
|
|
||||||
53.05218,8.62639
|
|
||||||
53.05217,8.62624
|
|
||||||
53.05208,8.62501
|
|
||||||
53.05208,8.62501
|
|
||||||
53.05198,8.6248
|
|
||||||
53.0519,8.62466
|
|
||||||
53.05177,8.62449
|
|
||||||
53.05177,8.62449
|
|
||||||
53.05165,8.62455
|
|
||||||
53.05127,8.62471
|
|
||||||
53.05127,8.62471,25,Post
|
|
||||||
53.05127,8.62471
|
|
||||||
53.05124,8.62472
|
|
||||||
53.05057,8.62501
|
|
||||||
53.05019,8.6251
|
|
||||||
53.04993,8.62514
|
|
||||||
53.04993,8.62514
|
|
||||||
53.04932,8.62526
|
|
||||||
53.04917,8.6253
|
|
||||||
53.04913,8.62531
|
|
||||||
53.04907,8.62532
|
|
||||||
53.04901,8.62533
|
|
||||||
53.04864,8.62542
|
|
||||||
53.04852,8.62547
|
|
||||||
53.04852,8.62547
|
|
||||||
53.04836,8.62551
|
|
||||||
53.04824,8.62563
|
|
||||||
53.04815,8.62575
|
|
||||||
53.04807,8.62588
|
|
||||||
53.04801,8.62603
|
|
||||||
53.0477,8.62679
|
|
||||||
53.0477,8.62679
|
|
||||||
53.04776,8.62686
|
|
||||||
53.04785,8.627
|
|
||||||
53.04802,8.62718
|
|
||||||
53.04806,8.62722
|
|
||||||
53.04811,8.62727
|
|
||||||
53.04823,8.62738
|
|
||||||
53.04836,8.62753
|
|
||||||
53.0484,8.62758
|
|
||||||
53.04847,8.6277
|
|
||||||
53.04855,8.62779
|
|
||||||
53.04867,8.62792
|
|
||||||
53.04867,8.62792,28,Markt A
|
|
||||||
53.04867,8.62792
|
|
||||||
53.04875,8.62796
|
|
||||||
53.04882,8.62795
|
|
||||||
53.04892,8.6279
|
|
||||||
53.049,8.62777
|
|
||||||
53.04908,8.62749
|
|
||||||
53.04912,8.62734
|
|
||||||
53.04912,8.6273
|
|
||||||
53.04915,8.62717
|
|
||||||
53.04919,8.6269
|
|
||||||
53.0492,8.62683
|
|
||||||
53.04921,8.62678
|
|
||||||
53.04922,8.62637
|
|
||||||
53.04921,8.62613
|
|
||||||
53.04921,8.62595
|
|
||||||
53.04918,8.62555
|
|
||||||
53.04918,8.62548
|
|
||||||
53.04917,8.6253
|
|
||||||
53.04917,8.6253
|
|
||||||
53.04913,8.62531
|
|
||||||
53.04907,8.62532
|
|
||||||
53.04901,8.62533
|
|
||||||
53.04864,8.62542
|
|
||||||
53.04852,8.62547
|
|
||||||
53.04852,8.62547
|
|
||||||
53.04843,8.62507
|
|
||||||
53.0484,8.62477
|
|
||||||
53.04836,8.62443
|
|
||||||
53.04835,8.62431
|
|
||||||
53.04832,8.624
|
|
||||||
53.04824,8.6233
|
|
||||||
53.04816,8.62264
|
|
||||||
53.04812,8.62232
|
|
||||||
53.04807,8.6219
|
|
||||||
53.04797,8.62123
|
|
||||||
53.04794,8.62099
|
|
||||||
53.04793,8.62084
|
|
||||||
53.04797,8.62059
|
|
||||||
53.04797,8.62059
|
|
||||||
53.04798,8.62059
|
|
||||||
53.048,8.62057
|
|
||||||
53.04802,8.62054
|
|
||||||
53.04803,8.6205
|
|
||||||
53.04804,8.62046
|
|
||||||
53.04803,8.6204
|
|
||||||
53.04801,8.62035
|
|
||||||
53.04799,8.62033
|
|
||||||
53.04798,8.62032
|
|
||||||
53.04795,8.62032
|
|
||||||
53.04792,8.62033
|
|
||||||
53.04792,8.62033
|
|
||||||
53.04786,8.62014
|
|
||||||
53.04781,8.62
|
|
||||||
53.04779,8.61996
|
|
||||||
53.04776,8.61991
|
|
||||||
53.04765,8.61977
|
|
||||||
53.04741,8.61953
|
|
||||||
53.0473,8.61943
|
|
||||||
53.04711,8.61926
|
|
||||||
53.04711,8.61926,30,Holbeinstr./Graft Therme
|
|
||||||
53.04711,8.61926
|
|
||||||
53.04711,8.61926
|
|
||||||
53.04677,8.61896
|
|
||||||
53.0466,8.61881
|
|
||||||
53.04593,8.61821
|
|
||||||
53.04588,8.61816
|
|
||||||
53.0458,8.61809
|
|
||||||
53.0449,8.61726
|
|
||||||
53.04468,8.61707
|
|
||||||
53.04406,8.61653
|
|
||||||
53.04377,8.61631
|
|
||||||
53.04314,8.61585
|
|
||||||
53.04314,8.61585
|
|
||||||
53.04335,8.61528
|
|
||||||
53.04341,8.61513
|
|
||||||
53.0435,8.61487
|
|
||||||
53.0435,8.61487,32,Berufsschule
|
|
||||||
53.0435,8.61487
|
|
||||||
53.04352,8.61481
|
|
||||||
53.04358,8.61464
|
|
||||||
53.04363,8.61451
|
|
||||||
53.04365,8.61446
|
|
||||||
53.04371,8.61429
|
|
||||||
53.04398,8.61351
|
|
||||||
53.04434,8.6125
|
|
||||||
53.04465,8.61165
|
|
||||||
53.04486,8.61109
|
|
||||||
53.04505,8.61056
|
|
||||||
53.04515,8.61031
|
|
||||||
53.04515,8.61031,33,Feuerbachstr.
|
|
||||||
53.04515,8.61031
|
|
||||||
53.04517,8.61025
|
|
||||||
53.04539,8.60965
|
|
||||||
53.04539,8.60965
|
|
||||||
53.04551,8.60971
|
|
||||||
53.04626,8.61
|
|
||||||
53.04709,8.6103
|
|
||||||
53.04709,8.6103
|
|
||||||
53.04713,8.60999
|
|
||||||
53.04752,8.60824
|
|
||||||
53.04752,8.60824
|
|
||||||
53.04744,8.60817
|
|
||||||
53.04711,8.60799
|
|
||||||
53.0469,8.60787
|
|
||||||
53.04681,8.60781
|
|
||||||
53.04681,8.60781,34,Schumannstr.
|
|
||||||
53.04681,8.60781
|
|
||||||
53.04655,8.60765
|
|
||||||
53.04652,8.60764
|
|
||||||
53.04636,8.60751
|
|
||||||
53.04621,8.60737
|
|
||||||
53.04596,8.60707
|
|
||||||
53.04571,8.60655
|
|
||||||
53.04562,8.60636
|
|
||||||
53.04484,8.60483
|
|
||||||
53.0447,8.60455
|
|
||||||
53.0446,8.60436
|
|
||||||
53.04456,8.60428
|
|
||||||
53.0444,8.60396
|
|
||||||
53.0443,8.60375
|
|
||||||
53.04397,8.6031
|
|
||||||
53.04397,8.6031
|
|
||||||
53.04401,8.60306
|
|
||||||
53.04406,8.60299
|
|
||||||
53.04408,8.6029
|
|
||||||
53.04408,8.60272
|
|
||||||
53.04408,8.60272,35,Brahmsstr.
|
|
||||||
53.04408,8.60271
|
|
||||||
53.04409,8.60211
|
|
||||||
53.0441,8.59964
|
|
||||||
53.04411,8.59904
|
|
||||||
53.04411,8.5986
|
|
||||||
53.04411,8.59858
|
|
||||||
53.04411,8.59858,36,Mozartstr.
|
|
||||||
53.04411,8.59858
|
|
||||||
53.04412,8.5982
|
|
||||||
53.04415,8.59779
|
|
||||||
53.04416,8.59764
|
|
||||||
53.04435,8.59665
|
|
||||||
53.04468,8.59547
|
|
||||||
53.04468,8.59547
|
|
||||||
53.04456,8.59534
|
|
||||||
53.04429,8.5951
|
|
||||||
53.04429,8.5951,37,Josef-Hospital
|
|
||||||
53.04429,8.59509
|
|
||||||
53.04407,8.59494
|
|
||||||
53.04393,8.59485
|
|
||||||
53.04392,8.59484
|
|
||||||
53.04336,8.5945
|
|
||||||
53.04294,8.59424
|
|
||||||
53.0429,8.59421
|
|
||||||
53.04249,8.59396
|
|
||||||
53.04211,8.59371
|
|
||||||
53.04175,8.59348
|
|
||||||
53.0417,8.59345
|
|
||||||
53.04161,8.5934
|
|
||||||
53.0416,8.5934
|
|
||||||
53.0414,8.59328
|
|
||||||
53.04117,8.59315
|
|
||||||
53.04107,8.5931
|
|
||||||
53.04098,8.59305
|
|
||||||
53.04052,8.59273
|
|
||||||
53.04052,8.59273
|
|
||||||
53.04054,8.59267
|
|
||||||
53.04054,8.59263
|
|
||||||
53.04052,8.59253
|
|
||||||
53.04049,8.59247
|
|
||||||
53.04044,8.59244
|
|
||||||
53.0404,8.59244
|
|
||||||
53.04038,8.59245
|
|
||||||
53.04034,8.59249
|
|
||||||
53.04032,8.59254
|
|
||||||
53.0403,8.59262
|
|
||||||
53.04031,8.59269
|
|
||||||
53.04033,8.59275
|
|
||||||
53.04034,8.59278
|
|
||||||
53.04038,8.59281
|
|
||||||
53.04041,8.59283
|
|
||||||
53.04045,8.59282
|
|
||||||
53.04048,8.5928
|
|
||||||
53.04052,8.59273
|
|
||||||
53.04098,8.59305
|
|
||||||
53.04107,8.5931
|
|
||||||
53.04117,8.59315
|
|
||||||
53.04118,8.59316
|
|
||||||
53.04118,8.59316,38,Hanse-Wissenschaftsk.,Deichhorst
|
|
||||||
53.04118,8.59316
|
|
||||||
53.0414,8.59328
|
|
||||||
53.0416,8.5934
|
|
||||||
53.04161,8.5934
|
|
||||||
53.04162,8.59341
|
|
||||||
53.04162,8.59341,48,Hanse-Wissenschaftsk.
|
|
||||||
53.04162,8.59341
|
|
||||||
53.0417,8.59345
|
|
||||||
53.04175,8.59348
|
|
||||||
53.04211,8.59371
|
|
||||||
53.04249,8.59396
|
|
||||||
53.0429,8.59421
|
|
||||||
53.04294,8.59424
|
|
||||||
53.04336,8.5945
|
|
||||||
53.04389,8.59483
|
|
||||||
53.04389,8.59483,49,Josef-Hospital
|
|
||||||
53.04389,8.59483
|
|
||||||
53.04392,8.59484
|
|
||||||
53.04393,8.59485
|
|
||||||
53.04407,8.59494
|
|
||||||
53.04429,8.59509
|
|
||||||
53.04456,8.59534
|
|
||||||
53.04468,8.59547
|
|
||||||
53.04468,8.59547
|
|
||||||
53.04435,8.59665
|
|
||||||
53.04416,8.59764
|
|
||||||
53.04415,8.59779
|
|
||||||
53.04412,8.5982
|
|
||||||
53.04412,8.5982,50,Mozartstr.
|
|
||||||
53.04412,8.59821
|
|
||||||
53.04411,8.5986
|
|
||||||
53.04411,8.59904
|
|
||||||
53.0441,8.59964
|
|
||||||
53.04409,8.60211
|
|
||||||
53.04408,8.60272
|
|
||||||
53.04408,8.6029
|
|
||||||
53.04406,8.60299
|
|
||||||
53.04401,8.60306
|
|
||||||
53.04397,8.6031
|
|
||||||
53.04397,8.6031
|
|
||||||
53.0443,8.60375
|
|
||||||
53.0443,8.60375,51,Brahmsstr.
|
|
||||||
53.0443,8.60375
|
|
||||||
53.0444,8.60396
|
|
||||||
53.04456,8.60428
|
|
||||||
53.0446,8.60436
|
|
||||||
53.0447,8.60455
|
|
||||||
53.04484,8.60483
|
|
||||||
53.04562,8.60636
|
|
||||||
53.04571,8.60655
|
|
||||||
53.04596,8.60707
|
|
||||||
53.04621,8.60737
|
|
||||||
53.04636,8.60751
|
|
||||||
53.04652,8.60764
|
|
||||||
53.04655,8.60765
|
|
||||||
53.0469,8.60787
|
|
||||||
53.04697,8.60791
|
|
||||||
53.04697,8.60791,52,Schumannstr.
|
|
||||||
53.04697,8.60791
|
|
||||||
53.04711,8.60799
|
|
||||||
53.04744,8.60817
|
|
||||||
53.04752,8.60824
|
|
||||||
53.04752,8.60824
|
|
||||||
53.04713,8.60999
|
|
||||||
53.04709,8.6103
|
|
||||||
53.04709,8.6103
|
|
||||||
53.04626,8.61
|
|
||||||
53.04551,8.60971
|
|
||||||
53.04539,8.60965
|
|
||||||
53.04539,8.60965
|
|
||||||
53.04517,8.61025
|
|
||||||
53.04505,8.61056
|
|
||||||
53.04486,8.61109
|
|
||||||
53.04486,8.61109,53,Feuerbachstr.
|
|
||||||
53.04486,8.61109
|
|
||||||
53.04465,8.61165
|
|
||||||
53.04434,8.6125
|
|
||||||
53.04398,8.61351
|
|
||||||
53.04371,8.61429
|
|
||||||
53.04365,8.61446
|
|
||||||
53.04363,8.61451
|
|
||||||
53.04358,8.61464
|
|
||||||
53.04353,8.61479
|
|
||||||
53.04353,8.61479,54,Berufsschule
|
|
||||||
53.04353,8.61479
|
|
||||||
53.04352,8.61481
|
|
||||||
53.04341,8.61513
|
|
||||||
53.04335,8.61528
|
|
||||||
53.04314,8.61585
|
|
||||||
53.04314,8.61585
|
|
||||||
53.04377,8.61631
|
|
||||||
53.04406,8.61653
|
|
||||||
53.04468,8.61707
|
|
||||||
53.0449,8.61726
|
|
||||||
53.0458,8.61809
|
|
||||||
53.04588,8.61816
|
|
||||||
53.04593,8.61821
|
|
||||||
53.0466,8.61881
|
|
||||||
53.04677,8.61896
|
|
||||||
53.04711,8.61926
|
|
||||||
53.0473,8.61943
|
|
||||||
53.04741,8.61953
|
|
||||||
53.04758,8.6197
|
|
||||||
53.04758,8.6197,55,Holbeinstr./Graft Therme
|
|
||||||
53.04758,8.6197
|
|
||||||
53.04765,8.61977
|
|
||||||
53.04776,8.61991
|
|
||||||
53.04779,8.61996
|
|
||||||
53.04781,8.62
|
|
||||||
53.04786,8.62014
|
|
||||||
53.04792,8.62033
|
|
||||||
53.04792,8.62033
|
|
||||||
53.0479,8.62035
|
|
||||||
53.04788,8.6204
|
|
||||||
53.04787,8.62042
|
|
||||||
53.04787,8.62048
|
|
||||||
53.04788,8.62053
|
|
||||||
53.0479,8.62056
|
|
||||||
53.04792,8.62058
|
|
||||||
53.04792,8.62058
|
|
||||||
53.04793,8.62084
|
|
||||||
53.04794,8.62099
|
|
||||||
53.04797,8.62123
|
|
||||||
53.04807,8.6219
|
|
||||||
53.04812,8.62232
|
|
||||||
53.04816,8.62264
|
|
||||||
53.04824,8.6233
|
|
||||||
53.04832,8.624
|
|
||||||
53.04835,8.62431
|
|
||||||
53.04836,8.62443
|
|
||||||
53.0484,8.62477
|
|
||||||
53.04843,8.62507
|
|
||||||
53.04852,8.62547
|
|
||||||
53.04852,8.62547
|
|
||||||
53.04836,8.62551
|
|
||||||
53.04824,8.62563
|
|
||||||
53.04815,8.62575
|
|
||||||
53.04807,8.62588
|
|
||||||
53.04801,8.62603
|
|
||||||
53.0477,8.62679
|
|
||||||
53.0477,8.62679
|
|
||||||
53.04776,8.62686
|
|
||||||
53.04785,8.627
|
|
||||||
53.04795,8.6271
|
|
||||||
53.04795,8.6271,59,Markt C1
|
|
||||||
53.04795,8.6271
|
|
||||||
53.04802,8.62718
|
|
||||||
53.04806,8.62722
|
|
||||||
53.04811,8.62727
|
|
||||||
53.04823,8.62738
|
|
||||||
53.04836,8.62753
|
|
||||||
53.0484,8.62758
|
|
||||||
53.04847,8.6277
|
|
||||||
53.04855,8.62779
|
|
||||||
53.04867,8.62792
|
|
||||||
53.04875,8.62796
|
|
||||||
53.04882,8.62795
|
|
||||||
53.04892,8.6279
|
|
||||||
53.049,8.62777
|
|
||||||
53.04908,8.62749
|
|
||||||
53.04912,8.62734
|
|
||||||
53.04912,8.6273
|
|
||||||
53.04915,8.62717
|
|
||||||
53.04919,8.6269
|
|
||||||
53.0492,8.62683
|
|
||||||
53.04921,8.62678
|
|
||||||
53.04922,8.62637
|
|
||||||
53.04921,8.62613
|
|
||||||
53.04921,8.62595
|
|
||||||
53.04918,8.62555
|
|
||||||
53.04918,8.62548
|
|
||||||
53.04917,8.6253
|
|
||||||
53.04917,8.6253
|
|
||||||
53.04932,8.62526
|
|
||||||
53.04993,8.62514
|
|
||||||
53.05019,8.6251
|
|
||||||
53.05019,8.6251,60,Post
|
|
||||||
53.05019,8.6251
|
|
||||||
53.05057,8.62501
|
|
||||||
53.05124,8.62472
|
|
||||||
53.05165,8.62455
|
|
||||||
53.05165,8.62455
|
|
||||||
53.05166,8.62476
|
|
||||||
53.05169,8.62506
|
|
||||||
53.0517,8.62519
|
|
||||||
53.05175,8.62573
|
|
||||||
53.0518,8.62629
|
|
||||||
53.05181,8.62642
|
|
||||||
53.05183,8.62659
|
|
||||||
53.05183,8.62666
|
|
||||||
53.05184,8.62677
|
|
||||||
53.05185,8.62687
|
|
||||||
53.05193,8.6278
|
|
||||||
53.05195,8.62804
|
|
||||||
53.05195,8.62822
|
|
||||||
53.05193,8.62839
|
|
||||||
53.05188,8.62865
|
|
||||||
53.05187,8.62872
|
|
||||||
53.05184,8.62888
|
|
||||||
53.05183,8.62913
|
|
||||||
53.05187,8.62972
|
|
||||||
53.05187,8.62972,63,Bahnhof / ZOB D
|
|
||||||
53.05187,8.62972,69,Bahnhof / ZOB D
|
|
||||||
53.05187,8.62972
|
|
||||||
53.05188,8.62983
|
|
||||||
53.05194,8.63053
|
|
||||||
53.05198,8.631
|
|
||||||
53.05203,8.63172
|
|
||||||
53.0521,8.63238
|
|
||||||
53.05215,8.63304
|
|
||||||
53.05216,8.63313
|
|
||||||
53.05218,8.63322
|
|
||||||
53.05218,8.63322
|
|
||||||
53.05222,8.6334
|
|
||||||
53.05261,8.63323
|
|
||||||
53.05271,8.63318
|
|
||||||
53.05329,8.63291
|
|
||||||
53.05329,8.63291
|
|
||||||
53.05418,8.63247
|
|
||||||
53.05418,8.63247,71,Am Wollepark
|
|
||||||
53.05418,8.63247
|
|
||||||
53.05422,8.63245
|
|
||||||
53.055,8.6321
|
|
||||||
53.05516,8.63203
|
|
||||||
53.05551,8.6319
|
|
||||||
53.05554,8.63188
|
|
||||||
53.05557,8.63188
|
|
||||||
53.05571,8.63183
|
|
||||||
53.05585,8.63179
|
|
||||||
53.05587,8.63178
|
|
||||||
53.0559,8.63177
|
|
||||||
53.05598,8.63167
|
|
||||||
53.05607,8.63165
|
|
||||||
53.05619,8.63162
|
|
||||||
53.05703,8.63143
|
|
||||||
53.05743,8.63134
|
|
||||||
53.05775,8.63126
|
|
||||||
53.05775,8.63126,72,Thüringer Str.
|
|
||||||
53.05775,8.63126
|
|
||||||
53.05776,8.63126
|
|
||||||
53.05783,8.63125
|
|
||||||
53.05795,8.63122
|
|
||||||
53.05808,8.63119
|
|
||||||
53.05872,8.63105
|
|
||||||
53.05906,8.63097
|
|
||||||
53.05908,8.63097
|
|
||||||
53.05925,8.63094
|
|
||||||
53.0596,8.63086
|
|
||||||
53.06006,8.63076
|
|
||||||
53.06023,8.63072
|
|
||||||
53.06023,8.63072,73,Schönemoorer Str.
|
|
||||||
53.06023,8.63072
|
|
||||||
53.06025,8.63072
|
|
||||||
53.06034,8.6307
|
|
||||||
53.06043,8.63068
|
|
||||||
53.06063,8.63063
|
|
||||||
53.06089,8.63057
|
|
||||||
53.06113,8.63052
|
|
||||||
53.06113,8.63052
|
|
||||||
53.06111,8.63029
|
|
||||||
53.06111,8.63011
|
|
||||||
53.06123,8.62987
|
|
||||||
53.06134,8.62963
|
|
||||||
53.06153,8.62922
|
|
||||||
53.06189,8.62841
|
|
||||||
53.06192,8.62834
|
|
||||||
53.06264,8.62667
|
|
||||||
53.06302,8.62581
|
|
||||||
53.06302,8.62581,74,Rilkeweg
|
|
||||||
53.06303,8.6258
|
|
||||||
53.06316,8.6255
|
|
||||||
53.06324,8.62532
|
|
||||||
53.06377,8.62411
|
|
||||||
53.06378,8.62408
|
|
||||||
53.06385,8.62393
|
|
||||||
53.06402,8.62364
|
|
||||||
53.06421,8.62345
|
|
||||||
53.06433,8.62338
|
|
||||||
53.06444,8.62333
|
|
||||||
53.06453,8.62331
|
|
||||||
53.06507,8.62318
|
|
||||||
53.06562,8.62306
|
|
||||||
53.06583,8.62302
|
|
||||||
53.06593,8.623
|
|
||||||
53.06593,8.623,74,Dwostr.
|
|
||||||
53.06593,8.623
|
|
||||||
53.06596,8.62299
|
|
||||||
53.0667,8.62284
|
|
||||||
53.06731,8.62271
|
|
||||||
53.06756,8.62266
|
|
||||||
53.06808,8.62257
|
|
||||||
53.06827,8.62253
|
|
||||||
53.06877,8.62244
|
|
||||||
53.06912,8.62237
|
|
||||||
53.06945,8.62233
|
|
||||||
53.06945,8.62233,75,Scheffelstr.
|
|
||||||
53.06945,8.62233
|
|
||||||
53.06952,8.62232
|
|
||||||
53.06957,8.62231
|
|
||||||
53.07036,8.6222
|
|
||||||
53.07048,8.62218
|
|
||||||
53.07051,8.62217
|
|
||||||
53.07076,8.62213
|
|
||||||
53.07179,8.62192
|
|
||||||
53.07251,8.62177
|
|
||||||
53.07303,8.62168
|
|
||||||
53.07303,8.62168,76,Friedensstr.
|
|
||||||
53.07303,8.62168
|
|
||||||
53.07304,8.62168
|
|
||||||
53.07325,8.62164
|
|
||||||
53.07335,8.62162
|
|
||||||
53.07335,8.62162
|
|
||||||
53.07334,8.62183
|
|
||||||
53.07302,8.62369
|
|
||||||
53.07291,8.62485
|
|
||||||
53.07284,8.62565
|
|
||||||
53.0728,8.62635
|
|
||||||
53.0728,8.62651
|
|
||||||
53.0728,8.62651,77,Hebbelweg
|
|
||||||
53.0728,8.62651
|
|
||||||
53.07279,8.62656
|
|
||||||
53.07276,8.62752
|
|
||||||
53.07274,8.62804
|
|
||||||
53.07271,8.62863
|
|
||||||
53.07268,8.62921
|
|
||||||
53.07268,8.6294
|
|
||||||
53.07265,8.62999
|
|
||||||
53.07265,8.62999,77,Gorch-Fock-Str.
|
|
||||||
53.07265,8.62999
|
|
||||||
53.07264,8.63009
|
|
||||||
53.07263,8.6305
|
|
||||||
53.07261,8.63082
|
|
||||||
53.07258,8.6315
|
|
||||||
53.0725,8.63359
|
|
||||||
53.07243,8.63491
|
|
||||||
53.07241,8.63565
|
|
||||||
53.0724,8.63582
|
|
||||||
53.0724,8.63582,78,Friedhof
|
|
||||||
53.0724,8.63582
|
|
||||||
53.0724,8.63589
|
|
||||||
53.07237,8.63638
|
|
||||||
53.07237,8.63646
|
|
||||||
53.07233,8.63722
|
|
||||||
53.07232,8.63758
|
|
||||||
53.07226,8.63883
|
|
||||||
53.07224,8.63919
|
|
||||||
53.07224,8.63924
|
|
||||||
53.07224,8.63924,78,Brauereiweg
|
|
||||||
53.07224,8.63924
|
|
||||||
53.07222,8.63967
|
|
||||||
53.07217,8.63997
|
|
||||||
53.0721,8.64015
|
|
||||||
53.0721,8.64015
|
|
||||||
53.07215,8.6402
|
|
||||||
53.07233,8.64039
|
|
||||||
53.07264,8.64073
|
|
||||||
53.07285,8.64095
|
|
||||||
53.07313,8.64124
|
|
||||||
53.07327,8.64139
|
|
||||||
53.07369,8.64177
|
|
||||||
53.07396,8.64198
|
|
||||||
53.07403,8.64202
|
|
||||||
53.07425,8.64218
|
|
||||||
53.07454,8.64237
|
|
||||||
53.07468,8.64246
|
|
||||||
53.07468,8.64246,79,Bungerhof
|
|
||||||
53.07468,8.64246,90,Bungerhof
|
|
||||||
|
@@ -1,53 +0,0 @@
|
|||||||
/*
|
|
||||||
* Copyright (c) 2020. Pascal Syma <pascal@syma.dev>.
|
|
||||||
* All rights reserved.
|
|
||||||
*/
|
|
||||||
|
|
||||||
body {
|
|
||||||
margin: 0;
|
|
||||||
height: 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
#buttons {
|
|
||||||
z-index: 500;
|
|
||||||
position: fixed;
|
|
||||||
margin: 8px;
|
|
||||||
bottom: 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
#settings {
|
|
||||||
position: fixed;
|
|
||||||
margin: 8px;
|
|
||||||
right: 0;
|
|
||||||
bottom: 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
#bus {
|
|
||||||
position: fixed;
|
|
||||||
right: 0;
|
|
||||||
margin: 8px;
|
|
||||||
text-align: center;
|
|
||||||
}
|
|
||||||
|
|
||||||
button, input {
|
|
||||||
width: 30px;
|
|
||||||
height: 30px;
|
|
||||||
}
|
|
||||||
|
|
||||||
#map {
|
|
||||||
height: 100vh;
|
|
||||||
width: 100vw;
|
|
||||||
}
|
|
||||||
|
|
||||||
#display {
|
|
||||||
width: 70px;
|
|
||||||
}
|
|
||||||
|
|
||||||
#showStops {
|
|
||||||
width: 100px;
|
|
||||||
}
|
|
||||||
|
|
||||||
#mpm {
|
|
||||||
width: 50px;
|
|
||||||
height: 24px;
|
|
||||||
}
|
|
||||||
|
Before Width: | Height: | Size: 6.7 KiB |
@@ -1,14 +0,0 @@
|
|||||||
{
|
|
||||||
"compilerOptions": {
|
|
||||||
"outDir": "./dist/",
|
|
||||||
"noImplicitAny": true,
|
|
||||||
"module": "es6",
|
|
||||||
"target": "es5",
|
|
||||||
"jsx": "react",
|
|
||||||
"allowJs": true,
|
|
||||||
"moduleResolution": "node"
|
|
||||||
},
|
|
||||||
"exclude": [
|
|
||||||
"node_modules"
|
|
||||||
]
|
|
||||||
}
|
|
||||||
@@ -1,53 +0,0 @@
|
|||||||
/*
|
|
||||||
* Copyright (c) 2020. Pascal Syma <pascal@syma.dev>.
|
|
||||||
* All rights reserved.
|
|
||||||
*/
|
|
||||||
|
|
||||||
const webpack = require("webpack");
|
|
||||||
const path = require("path");
|
|
||||||
const HtmlWebpackPlugin = require("html-webpack-plugin");
|
|
||||||
const {CleanWebpackPlugin} = require("clean-webpack-plugin");
|
|
||||||
|
|
||||||
module.exports = {
|
|
||||||
mode: "development",
|
|
||||||
devtool: "eval-source-map",
|
|
||||||
module: {
|
|
||||||
rules: [
|
|
||||||
{
|
|
||||||
test: /\.js$/,
|
|
||||||
exclude: /node_modules/,
|
|
||||||
use: {
|
|
||||||
loader: "babel-loader"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
{
|
|
||||||
test: /\.tsx?$/,
|
|
||||||
use: 'ts-loader',
|
|
||||||
exclude: /node_modules/,
|
|
||||||
},
|
|
||||||
{
|
|
||||||
test: /\.(ogg|mp3|wav|mpe?g|gif|png|jpe?g|svg|xml)$/i,
|
|
||||||
use: "file-loader"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
test: /\.csv$/i,
|
|
||||||
use: 'raw-loader',
|
|
||||||
},
|
|
||||||
{
|
|
||||||
test: /\.css$/i,
|
|
||||||
use: ['style-loader', 'css-loader'],
|
|
||||||
},
|
|
||||||
]
|
|
||||||
},
|
|
||||||
resolve: {
|
|
||||||
extensions: ['.tsx', '.ts', '.js'],
|
|
||||||
},
|
|
||||||
plugins: [
|
|
||||||
new CleanWebpackPlugin({
|
|
||||||
root: path.resolve(__dirname, "../")
|
|
||||||
}),
|
|
||||||
new HtmlWebpackPlugin({
|
|
||||||
template: "./index.html"
|
|
||||||
})
|
|
||||||
]
|
|
||||||
};
|
|
||||||
@@ -1,66 +0,0 @@
|
|||||||
/*
|
|
||||||
* Copyright (c) 2020. Pascal Syma <pascal@syma.dev>.
|
|
||||||
* All rights reserved.
|
|
||||||
*/
|
|
||||||
|
|
||||||
const {merge} = require('webpack-merge');
|
|
||||||
const path = require("path");
|
|
||||||
const base = require("./base");
|
|
||||||
const TerserPlugin = require("terser-webpack-plugin");
|
|
||||||
const WorkboxPlugin = require('workbox-webpack-plugin');
|
|
||||||
const FaviconsWebpackPlugin = require('favicons-webpack-plugin');
|
|
||||||
|
|
||||||
module.exports = merge(base, {
|
|
||||||
mode: "production",
|
|
||||||
output: {
|
|
||||||
filename: "bundle.min.js"
|
|
||||||
},
|
|
||||||
devtool: false,
|
|
||||||
performance: {
|
|
||||||
maxEntrypointSize: 900000,
|
|
||||||
maxAssetSize: 900000
|
|
||||||
},
|
|
||||||
optimization: {
|
|
||||||
minimizer: [
|
|
||||||
new TerserPlugin({
|
|
||||||
terserOptions: {
|
|
||||||
output: {
|
|
||||||
comments: false
|
|
||||||
}
|
|
||||||
}
|
|
||||||
})
|
|
||||||
]
|
|
||||||
},
|
|
||||||
plugins: [
|
|
||||||
new WorkboxPlugin.GenerateSW({
|
|
||||||
clientsClaim: true,
|
|
||||||
skipWaiting: true,
|
|
||||||
}),
|
|
||||||
new FaviconsWebpackPlugin({
|
|
||||||
logo: './map.png',
|
|
||||||
publicPath: "./",
|
|
||||||
favicons: {
|
|
||||||
manifestRelativePaths: true,
|
|
||||||
start_url: "../",
|
|
||||||
appName: 'RealTime Delbus',
|
|
||||||
appDescription: 'Real-Time Delbus Map',
|
|
||||||
appShortName: "RealTime Delbus",
|
|
||||||
developerName: 'syma.dev',
|
|
||||||
developerURL: "https://syma.dev",
|
|
||||||
background: '#000',
|
|
||||||
theme_color: '#333',
|
|
||||||
logging: false,
|
|
||||||
icons: {
|
|
||||||
android: true,
|
|
||||||
appleIcon: true,
|
|
||||||
appleStartup: false,
|
|
||||||
coast: false,
|
|
||||||
favicons: true,
|
|
||||||
firefox: true,
|
|
||||||
windows: true,
|
|
||||||
yandex: false
|
|
||||||
}
|
|
||||||
}
|
|
||||||
})
|
|
||||||
]
|
|
||||||
});
|
|
||||||