Я пытаюсь ответить на основании того, что я понял. Посмотрите, если это вам поможет.
Вы можете использовать статический алиас mapbox, чтобы получить предварительный просмотр изображения спутника:
<img src="https://api.mapbox.com/styles/v1/mapbox/satellite-v9/static/-74.50000,40.00000,9.0,0,0/300x300?access_token=pk.eyJ1IjoiYndhZGFtc29uIiwiYSI6ImNqajZhNm1idDFzMjIza3A2Y3ZmdDV6YWYifQ.9NhptR7a9D0hzWXR51y_9w"/>
[ https: / /www.mapbox.com/help/static-api-playground/]
Обновление:
Вы можете использовать mapbox/geo-viewport
библиотека для расчета центральной точки и масштабирования для предварительного просмотра и render
событие для обновления предварительного просмотра:
map.on('render', function() {
setMapPreview()
})
function setMapPreview() {
var bounds = map.getBounds().toArray()
bounds = [bounds[0][0], bounds[0][1], bounds[1][0], bounds[1][1]]
// The size of the desired map.
var size = [100, 100];
// Calculate a zoom level and centerpoint for this map.
var vp = geoViewport.viewport(bounds, size, 0, 24, 512);
// Construct a static map url
// https://www.mapbox.com/developers/api/static/
document.getElementById('preview').src =
'https://api.mapbox.com/styles/v1/mapbox/satellite-v9/static/' +
vp.center.join(',') + ',' + vp.zoom + ',0,0/' +
size.join('x') + '?' +
'attribution=false&logo=false&access_token=' + mapboxgl.accessToken;
}
[ https://jsfiddle.net/btv9ogpc/ ]
Невозможно добавить событие, щелкнув на предварительный просмотр, и повернуть стили:
document.getElementById('preview').addEventListener('click', function () {
map.setStyle('mapbox://styles/mapbox/satellite-v9')
})
Похоже, что вас будут интересовать некоторые плагины Leaflet для управления Layer Switching Control ( mapbox.js встроены в лифлет, поэтому они должны быть совместимы):
Элемент управления базой данных, управляемый черепицей, для Листовки.
Это позволяет вам создать элемент управления пользовательским интерфейсом для выбора базовой карты, используемой на карте, на основе фрагмента из базовой службы плитки.
С помощью этого плагина вы просто указываете некоторые постоянные координаты плитки, которые будут использоваться как «предварительный просмотр»:
map.addControl(L.control.basemaps({ basemaps: basemaps, // Array of Tile Layers. tileX: 0, // tile X coordinate tileY: 0, // tile Y coordinate tileZ: 1 // tile zoom level }));
- Листовки-IconLayers : (Лицензия MIT)
Элемент управления листами, отображающий базовые слои в виде небольших значков ( demo ).
Для этого плагина, несмотря на то, что документация использует разные изображения размером 80x80 пикселей в качестве значка предварительного просмотра, вы можете очень хорошо повторное использование плиток с конкретными координаты, и плагин изменит их размеры в соответствии с его значками:
var map = L.map('map').setView([48.86, 2.35], 5); var OpenStreetMap_Mapnik = L.tileLayer('https://{s}.tile.openstreetmap.org/{z}/{x}/{y}.png', { maxZoom: 19, attribution: '© <a href="http://www.openstreetmap.org/copyright">OpenStreetMap</a>' }).addTo(map); var OpenTopoMap = L.tileLayer('https://{s}.tile.opentopomap.org/{z}/{x}/{y}.png', { maxZoom: 17, attribution: 'Map data: © <a href="http://www.openstreetmap.org/copyright">OpenStreetMap</a>, <a href="http://viewfinderpanoramas.org">SRTM</a> | Map style: © <a href="https://opentopomap.org">OpenTopoMap</a> (<a href="https://creativecommons.org/licenses/by-sa/3.0/">CC-BY-SA</a>)' }); var layers = [{ layer: OpenStreetMap_Mapnik, title: 'OSM Mapnik', icon: 'https://a.tile.openstreetmap.org/1/0/0.png' }, { layer: OpenTopoMap, title: 'OSM Topo', icon: 'https://a.tile.opentopomap.org/1/0/0.png' // Re-use a tile }]; L.control.iconLayers(layers).addTo(map);
html, body, #map { height: 100%; margin: 0; }
<link rel="stylesheet" href="https://unpkg.com/leaflet@1.3.1/dist/leaflet.css" integrity="sha512-Rksm5RenBEKSKFjgI3a41vrjkw4EVPlJ3+OiI65vTjIdo9brlAacEuKOiQ5OFh7cOI1bkDwLqdLw3Zg0cRJAAQ==" crossorigin="" /> <script src="https://unpkg.com/leaflet@1.3.1/dist/leaflet-src.js" integrity="sha512-IkGU/uDhB9u9F8k+2OsA6XXoowIhOuQL1NTgNZHY1nkURnqEGlDZq3GsfmdJdKFe1k1zOc6YU2K7qY+hF9AodA==" crossorigin=""></script> <link rel="stylesheet" href="https://cdn.rawgit.com/ScanEx/Leaflet-IconLayers/ea9af769/dist/iconLayers.css" /> <script src="https://cdn.rawgit.com/ScanEx/Leaflet-IconLayers/ea9af769/dist/iconLayers.js"></script> <div id="map"></div>
Если вы хотите, вы также можете использовать изображения из API-интерфейса mapbox static, как показано в stdob - ответ .
click
в предварительный просмотр и вращать стили: jsfiddle.net/xh74rb83 – stdob-- 16 July 2018 в 10:01