Мне удалось сохранить на своем жестком диске скриншот карты, сгенерированной с помощью API Карт Google, с помощью html2canvas. Теперь я пытаюсь сделать то же самое с API MapBox, и все, что я получаю на своем жестком диске, - это черный экран jpg.Скриншот MapBox с использованием html2canvas создает черный jpg
Вот мой HTML код:
<!DOCTYPE html>
<html>
<head>
<link rel="stylesheet" href="css/main.css">
<script src='https://api.tiles.mapbox.com/mapbox-gl-js/v0.12.2/mapbox-gl.js'></script>
<script src="js/html2canvas.js"></script>
</head>
<body onload="initialize()">
<div id="map"></div>
<script src="js/coordinates.js"></script>
</body>
</html>
Используя этот CSS, чтобы отобразить его на весь экран:
html { height: 100%; }
body { height: 100%; margin: 0px; padding: 0px; }
#map_canvas { width: 100%; height: 100%; }
И этот JS скрипт для создания карты и взять скриншот:
mapboxgl.accessToken = 'pk.eyJ1IjoiZ2luZ2FsYWJ2IiwiYSI6ImNpaWluNXIzbDAwMjB3ZG02c2hmNGhhMnUifQ.5SC9qnrK7eEdAtwv5Z0S_Q';
var latitude = 48.858565;
var longitude = 2.347198;
function initialize()
{
var map = new mapboxgl.Map(
{
container: 'map',
style: 'mapbox://styles/mapbox/dark-v8',
center: [2.347198, 48.858565],
zoom: 16,
pitch: 35
});
setTimeout(screenshot, 1000);
}
function screenshot()
{
html2canvas(document.body,
{
useCORS: true,
onrendered: function(canvas)
{
var image = document.createElement('a');
image.href = canvas.toDataURL("image/jpeg").replace("image/jpeg", "image/octet-stream");
image.download = 'map.jpg';
image.click();
}
});
}
Я использую один тайм-аут, чтобы убедиться, что карта хорошо создана, прежде чем делать снимок экрана. Чтобы быть уверенным, что это было так, я даже создал кнопку в моей DOM, вызывающей функцию screenshot() при нажатии, поэтому я уверен, что время рендеринга не является проблемой.
Я прочел здесь: Print Mapbox/Leaflet Map что html2canvas не смог правильно напечатать карту из-за каких-то фиксированных макетов. Интересно, почему он работал с картами Google Maps, но неважно. У вас есть представление об этом?
Спасибо, но этот скриншот апи не работает с MapBox-ГЛ апи. Однако полезно использовать традиционные карты карт. – Biloutage
Hum ... С его webgl/canvas мы говорим о ставке, что вы можете захватить данные изображения из этого. см. мое редактирование для кода – glued
Это работает как шарм. Благодарю. – Biloutage