You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 

66 lines
1.8 KiB

import type Mithril from 'mithril';
import app from 'flarum/forum/app';
import Page from 'flarum/common/components/Page';
function translate(id: string): string {
return app.translator.trans(id) as string;
}
export default class GlobalMapPage extends Page {
oninit(vnode: Mithril.Vnode) {
super.oninit(vnode);
app.setTitle(translate('justoverclock-users-map-location.forum.global-map.title'));
this.map = null;
}
view() {
return <div class="GlobalMapPage">
<div className="container">
<h2>{translate('justoverclock-users-map-location.forum.global-map.title2')}</h2>
<div className="global-map"></div>
</div>
</div>;
}
oncreate(vnode) {
this.onupdate(vnode);
}
onupdate(vnode) {
let dom = vnode.dom;
let mapElements = dom.getElementsByClassName('global-map');
if(mapElements.length > 0) {
if(!this.map) {
let mapElement = mapElements[0];
const publicToken = app.forum.attribute('justoverclock-users-map-location.mapBox-api-key');
const markerIconPath = app.forum.attribute('baseUrl') + '/assets/extensions/justoverclock-users-map-location/marker-icon.png';
let markerIcon = L.icon({
iconUrl: markerIconPath,
iconSize: [25, 41], // size of the icon
iconAnchor: [13, 40]
});
this.map = L.map(mapElement);
let layer = L.tileLayer('https://api.mapbox.com/styles/v1/{id}/tiles/{z}/{x}/{y}?access_token={accessToken}', {
attribution:
'Map data &copy; <a href="https://www.openstreetmap.org/copyright">OpenStreetMap</a> contributors, Imagery &copy; <a href="https://www.mapbox.com/">Mapbox</a>',
maxZoom: 18,
edgeBufferTiles: 1,
id: 'mapbox/streets-v11',
tileSize: 512,
zoomOffset: -1,
accessToken: publicToken,
}).addTo(this.map);
this.map.setView([46, 2], 6);
}
} else {
this.map = null;
}
}
}