FRS/gmap/code
Jump to navigation
Jump to search
This is code that can be used in Bookmarklets to display the rail lines on the Map. The code is written in CoffeeScript, and has to be compiled to javascript first. The data for the rail lines can be found on FRS/gmap.
require = (pkg) =>
@_required ?= []
if pkg in @_required
Promise.resolve pkg
else
new Promise (resolve, reject) =>
script = document.createElement 'script'
script.src = "//unpkg.com/#{pkg}"
script.onload = =>
@_required.push pkg
resolve pkg
return
script.onerror = reject
document.body.appendChild script
return
handleData = (data) =>
for name, info of data
L.Polyline.fromEncoded info.path, color: 'black'
.bindTooltip name, sticky: true
.addTo overviewer.map
L.Polyline.fromEncoded info.path, color: info.color, dashArray: '5 10'
.bindTooltip name, sticky: true
.addTo overviewer.map
for bname, binfo of info.branches
L.Polyline.fromEncoded binfo.path, color: binfo.color
.bindTooltip bname, sticky: true
.addTo overviewer.map
for _, station of info.stations
L.circleMarker [station.lat, station.lng],
radius: 4
color: 'black'
weight: 2
fillColor: 'orangered'
fillOpacity: 0.8
pane: 'markerPane'
.bindTooltip station.title
.addTo overviewer.map
return
require "polyline-encoded"
.then =>
fetch "/w/api.php?format=json&action=query&titles=FRS/gmap&prop=revisions&rvprop=content"
.then (response) =>
response.json()
.then (json) =>
for _, page of json.query.pages
handleData JSON.parse page.revisions[0]['*']
return
And here's the version that can be used directly as bookmarklet:
javascript:(function(){var o,e=[].indexOf;o=(o=>{var e,r,i,n,a,l,t,d;for(a in o){for(i in n=o[a],L.Polyline.fromEncoded(n.path,{color:"black"}).bindTooltip(a,{sticky:!0}).addTo(overviewer.map),L.Polyline.fromEncoded(n.path,{color:n.color,dashArray:"5 10"}).bindTooltip(a,{sticky:!0}).addTo(overviewer.map),l=n.branches)r=l[i],L.Polyline.fromEncoded(r.path,{color:r.color}).bindTooltip(i,{sticky:!0}).addTo(overviewer.map);for(e in t=n.stations)d=t[e],L.circleMarker([d.lat,d.lng],{radius:4,color:"black",weight:2,fillColor:"orangered",fillOpacity:.8,pane:"markerPane"}).bindTooltip(d.title).addTo(overviewer.map)}}),(o=>(null==this._required&&(this._required=[]),e.call(this._required,o)>=0?Promise.resolve(o):new Promise((e,r)=>{var i;(i=document.createElement("script")).src=`//unpkg.com/${o}`,i.onload=(()=>{this._required.push(o),e(o)}),i.onerror=r,document.body.appendChild(i)})))("polyline-encoded").then(()=>fetch("/w/api.php?format=json&action=query&titles=FRS/gmap&prop=revisions&rvprop=content")).then(o=>o.json()).then(e=>{var r,i,n;for(r in n=e.query.pages)i=n[r],o(JSON.parse(i.revisions[0]["*"]))})}).call(this);
Since this code is placed on this wiki, it's licensed under the Creative Commons Attribution-NonCommercial-ShareAlike 3.0 Unported license (see MinecraftOnline:Copyrights for details).