Get OpenStreetMap Leaflet object

Get the Leaflet object of OpenStreetMap's website

此腳本不應該直接安裝,它是一個供其他腳本使用的函式庫。欲使用本函式庫,請在腳本 metadata 寫上: // @require https://update.greasyfork.org/scripts/533461/1652653/Get%20OpenStreetMap%20Leaflet%20object.js

// ==UserScript==
// @name        Get OpenStreetMap Leaflet object
// @match       *://www.openstreetmap.org/*
// @match       *://www.opengeofiction.net/*
// @match       *://opengeofiction.net/*
// @version     1.1
// @author      CyrilSLi
// @description Get the Leaflet object of OpenStreetMap's website
// @license     MIT
// ==/UserScript==

unsafeWindow.userscriptMap = null;
const callbacks = [];
unsafeWindow.onOSMReady = function (fn) {
    if (typeof fn === 'function') {
        if (unsafeWindow.userscriptMap) {
            fn();
        } else {
            callbacks.push(fn);
        }
    } else {
        throw new Error("Parameter is not a function");
    }
};

if (typeof L !== "undefined" && typeof L.Map !== "undefined") {
    L.Map.addInitHook(function () {
        if (this._container && this._container.id === "map") {
            unsafeWindow.userscriptMap = this;
            while (callbacks.length > 0) {
                callbacks.shift()();
            }
        }
    });
}