此顶部展示栏(理论上)只有管理员可见
全站通知:

Widget:Map3/main

来自APEXWIKI_BWIKI_哔哩哔哩
跳到导航 跳到搜索

<style> #map-wrap .map-setting-btn { zoom: 0.8; font-size: 8px; width: 32px; height: 32px; } </style>

<style> .leaflet-container { background: rgb(23,75,86)!important; } .leaflet-control-attribution {display:none} .leaflet-left { transition: all 0.5s; } .leaflet-popup-content-wrapper {border-radius:0}

.leaflet-bar a, .leaflet-bar a:hover { background: rgba(0, 0, 0, 0.8); color: #CED3DE; border: 0; }

.leaflet-bar a:hover { background: rgba(33, 33, 33, 0.8); }

.leaflet-pm-toolbar .control-icon { filter: invert() brightness(1.25); }

#map-wrap { border: 1px solid rgba(0, 0, 0, 0.1) } </style>


<script name="map.main.js"> var map; // 地图对象 var mapApi = new BwikiMapApi(); // 地图api var mapModel, self;

var mapData = { getStorageKey : function(){ return "wiki" + mapModel.game().toUpperCase() + mapModel.dataPrefix().replace("Data:", "") }, getIconUrl : function (icon) { return `https://prod-patch-wiki.biligame.com/res/ys/map/icons/${icon}?v=${mapData.default.srcVersion}` }, getCenter: function () { // #接参数可以走缓存,而?会慢一些 var center = (util.getUrlValue('hash', 'center').replace(/ /g, ) || ).split(',') return center.length === 2 ? center : [0, 0] }, getCategoryData: function () { var selectedType = localStorage.getItem(mapData.getStorageKey() + "SelectedType"); if(selectedType !== null) selectedType = selectedType.split(",") var categoryDataJson = $("#mapData #categoryData").text().trim(); if (categoryDataJson !== "") { categoryDataJson = JSON.parse(categoryDataJson) var categoryTemp = {}, categoryList = [], categoryData = [] $.each(categoryDataJson, function (i, v) { v.icon = v.icon.indexOf("http") === 0 ? v.icon : mapData.getIconUrl(v.icon); if (!categoryTemp[v.type]) { categoryList.push(v.type) categoryTemp[v.type] = {name: v.type, data: []} } if(selectedType !== null) { v.defaultShow = selectedType.indexOf(v.markType + "") !== -1?1:0 } categoryTemp[v.type].data.push(v) }) $.each(categoryList, function (i, v) { categoryData[i] = categoryTemp[v] }) return categoryData } return [] }, setCategoryData: function () { var data = mapData.getCategoryData(); data.length > 0 ? mapModel.setMarkerLayer(data) : mapModel.getMarkerList(); }, setMarkerWithInfo: function () { var data = $("#mapData #markerWithInfo").text().trim().replace(RegExp(`${mapModel.dataPrefix()}\\/point\\/`,"g"), "").split(", "); mapModel.markerWithInfo(data); }, getTileUrl: function(coords) { coords = function (coords) { var y = -coords.y + -1, r = Math.ceil((1 << coords.z - 1)/2); return ( -r / 2 <= coords.x && coords.x < r && -r <= y && y <= r / 2 - 1 && {x: coords.x, y: -coords.y + -1, z: coords.z}) }(coords); return coords ? `https://wiki-dev-patch-oss.oss-cn-hangzhou.aliyuncs.com/res/apex/map/tiles/${coords.z}/tile-${coords.x}_${coords.y}.png?v=${mapModel.srcVersion()}` : `http://wiki-dev-patch-oss.oss-cn-hangzhou.aliyuncs.com/res/apex/map/tiles/default.png?v=${mapModel.srcVersion()}`; }, setGeoData: function () { mapModel.areaData(JSON.parse($("#mapData #mapAreaData").text().trim())); // mapModel.routeData(JSON.parse($("#mapData #mapAreaData").text().trim())); }, afterSetMarkers: function(){ var selectedType = []; $.each(mapModel.categorySelected(), function(type, selected){ if(selected) selectedType.push(type) }) localStorage.setItem(mapData.getStorageKey() + "SelectedType", selectedType.join(",")) } }

var $ready = function () { $.fn.swipe = swipe; $("#map-wrap").swipe(); mapApi.set({game: 'ys', site: mw.config.get("wgGameName"), dataPrefix: 'Data:Map'}) ko.applyBindings(mapModel = new MapModel(mapData.default = { game: 'apex', site: mw.config.get("wgGameName"), mapid: 'map3', dataPrefix: 'Data:Map', mapCenter: [0,0], srcVersion: '3.0.13', minZoom: 4, maxZoom: 8, isPhone: window.innerWidth < 540, toolbox: mw.config.get("wgUserGroups").indexOf("sysop") !== -1, dataList: ["point.json"] })); self = mapModel; mapModel.map.init(); mapData.setCategoryData(); mapData.setMarkerWithInfo(); mapData.setGeoData();

mapModel.afterSetMarkers = mapData.afterSetMarkers

window.onresize=function(){ if(window.innerWidth < 540 && !mapModel.isPhone()) return mapModel.isPhone(true) if(window.innerWidth >= 540 && mapModel.isPhone()) return mapModel.isPhone(false) } }; </script> <script>(function () {var t = function () {window.jQuery && window.mw ? mw.loader.load('ext.gadget.Map3') : window.setTimeout(t, 100); }; t(); })();</script>