Greasy Fork is available in English.

GeoFSMax-破解GeoFS,免费解锁GeoFS高清地景,极限优化GeoFS建筑,替换地图使用Google Earth(geo-fs)

全网第一个GeoFS(www.geo-fs.com)破解脚本,永久免费使用GeoFS付费高清地景,帮你节省近80元/年订阅费。告别GeoFS的纸盒子建筑,体验Google Earth的超细节建筑。

// ==UserScript==
// @name         GeoFSMax-破解GeoFS,免费解锁GeoFS高清地景,极限优化GeoFS建筑,替换地图使用Google Earth(geo-fs)
// @namespace    http://tampermonkey.net/
// @version      0.0.1
// @description  全网第一个GeoFS(www.geo-fs.com)破解脚本,永久免费使用GeoFS付费高清地景,帮你节省近80元/年订阅费。告别GeoFS的纸盒子建筑,体验Google Earth的超细节建筑。
// @author       MelonFish
// @match        https://www.geo-fs.com/geofs.php*
// @match        http://www.geo-fs.com/geofs.php*
// @icon         https://www.geo-fs.com/favicon.ico
// @grant        none
// @license      GNU GPLv3
// ==/UserScript==

(function() {
    'use strict';
    function main() {
        geofsNewHDState = true;
        geofs.geoIpUpdate = async function() {
            document.body.classList.add('geofs-hd');
            Cesium.Ion.defaultAccessToken = 'eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJqdGkiOiI4MGYwZGY2Yy04MjhjLTRiZGYtYWI2MS00ZTdiYjdjYjZiNTAiLCJpZCI6MjE5Mzk5LCJpYXQiOjE3MTczMTcxMDV9.TlcOjfjsc7-hIIiy7ReCyM_2mJ5gyMGIAN77g3qE-Kg'
            geofs.api.imageryProvider = new Cesium.IonImageryProvider({assetId:2});
            geofs.api.setImageryProvider(geofs.api.imageryProvider, false, null, null, null, 'bing');
            geofs.api.setTerrainProvider(new geofs.api.FlatRunwayTerrainProvider({
                baseProvider: new Cesium.CesiumTerrainProvider({
                    url: 'https://data2.geo-fs.com/srtm/',
                    requestWaterMask: false,
                    requestVertexNormals: true
                }),
                bypass: false,
                maximumLevel: 12
            }), 'geofs');
            geofs.api.analytics.event('geofs', 'mode', 'hd', 1);
        };
        geofs.geoIpUpdate();
        //geofs.api.viewer.scene.primitives.add(new Cesium.Cesium3DTileset({url:Cesium.IonResource.fromAssetId(2275207)}))
    }

    function executeFunctionUntilSuccess(func) {
        let intervalId;
        function tryExecute() {
            try {
                func();
                clearInterval(intervalId);
            } catch (error) {
                console.error("An error occurred:", error);
            }
        }
        intervalId = setInterval(tryExecute, 3000);
    }
    executeFunctionUntilSuccess(main)
})();