精品伊人久久大香线蕉,开心久久婷婷综合中文字幕,杏田冲梨,人妻无码aⅴ不卡中文字幕

打開APP
userphoto
未登錄

開通VIP,暢享免費電子書等14項超值服

開通VIP
openlayers6地圖全圖以及框選截圖導出功能(附源碼下載)

內容概覽

openlayers6地圖截圖導出功能
源代碼demo下載

效果圖如下:

本篇主要參考截圖插件domtoimage:https://github.com/tsayen/dom-to-image
地圖全圖導出直接用上面的domtoimage插件,然后矩形框選截圖導出也是在domtoimage插件基礎上自己計算矩形范圍來實現的

  • 部分核心代碼,完整的見源碼demo下載

var baseLayer = new ol.layer.Tile({
source: new ol.source.TileArcGISRest({
url: 'http://map.geoq.cn/ArcGIS/rest/services/ChinaOnlineStreetPurplishBlue/MapServer',
crossOrigin:'Anonymous'})
}); 
//繪制工具圖形var draw = null;var drawsource = new ol.source.Vector();var drawlayer = new ol.layer.Vector({
source: drawsource,
style:new ol.style.Style({
stroke: new ol.style.Stroke({
color: '#fff',
width: 1}),
fill: new ol.style.Fill({
color:[38,155,0,0] //使用了一個數組,[r,g,b,a]})
}),
}); 
var view = new ol.View({
center: [113.90271877, 22.95186415],
zoom: 9,
projection: 'EPSG:4326',
}); 
var map = new ol.Map({
layers: [
baseLayer,
drawlayer
],
target: 'map',
view: view
}); 
//參考截圖插件:https://github.com/tsayen/dom-to-imagevar node = document.getElementById('map');
$("#mapexport_btn").click(function(){
domtoimage.toJpeg(node, { quality: 1.0 })
.then(function (dataUrl) {var link = document.createElement('a');
link.download = '全圖導出.jpeg';
link.href = dataUrl;
link.click();
});
});
 
$("#rctanglexport_btn").click(function(){//繪制矩形clearMap();
addInteraction("Box");
}); 
function addInteraction(value){var geometryFunction;switch (value) {case "Box":
value = 'Circle';
geometryFunction = ol.interaction.Draw.createBox();break;case "Polygon":
value = 'Polygon';break;
}//map.addLayer(drawlayer);draw = new ol.interaction.Draw({
source: drawsource,
type: value,
style:new ol.style.Style({
stroke: new ol.style.Stroke({
color: '#fff',
width: 1}),
fill: new ol.style.Fill({
color:[38,155,0,0] //使用了一個數組,[r,g,b,a]}),
image: new ol.style.Circle({
radius: 3,
fill: new ol.style.Fill({
color: '#ffcc33'})
})
}),
geometryFunction: geometryFunction
});
map.addInteraction(draw);
draw.on('drawend',function(evt){
clearMap();var feature = evt.feature;var extent = feature.getGeometry().getExtent();//地理坐標轉換屏幕坐標var coord = [extent[0], extent[3]];var leftTopPosition = map.getPixelFromCoordinate(coord);//地理坐標轉換屏幕坐標var coord1 = [extent[2], extent[1]];var bottomRightPosition = map.getPixelFromCoordinate(coord1);//計算框選矩形的寬度以及高度像素var width = Math.abs(bottomRightPosition[0] - leftTopPosition[0]);var height = Math.abs(bottomRightPosition[1] - leftTopPosition[1]);//計算框選矩形的左上角屏幕坐標var minx =leftTopPosition[0]<= bottomRightPosition[0]? leftTopPosition[0]
: bottomRightPosition[0];var miny =leftTopPosition[1] <= bottomRightPosition[1]? leftTopPosition[1]
: bottomRightPosition[1];
domtoimage
.toPng(node)
.then(function(dataUrl) {if (dataUrl.length <= 6) {
console.log("屏幕截圖結果為空,建議放大地圖,重新截圖操作試試看");return;
}//過渡img圖片,為了截取img指定位置的截圖需要var img = new Image();
img.src = dataUrl;
img.onload = function() {//要先確保圖片完整獲取到,這是個異步事件var canvas = document.createElement("canvas"); //創建canvas元素canvas.width = width;
canvas.height = height;
canvas
.getContext("2d")
.drawImage(img, minx, miny, width, height, 0, 0, width, height); //將圖片繪制到canvas中dataUrl = canvas.toDataURL(); //轉換圖片為dataURLvar link = document.createElement('a');
link.download = '框選導出.jpeg';
link.href = dataUrl;
link.click();
console.log("截圖數據獲取成功");
};
})
.catch(function(error) {
console.error("oops, something went wrong!", error);
});
 
});
}

點擊跳轉到小專欄文章,完整源代碼demo在文章尾部

本站僅提供存儲服務,所有內容均由用戶發布,如發現有害或侵權內容,請點擊舉報
打開APP,閱讀全文并永久保存 查看更多類似文章
猜你喜歡
類似文章
openlayers6地圖切換展示(附源碼下載)
OpenLayers3入門篇
openlayers4 入門開發系列之臺風軌跡篇
OpenLayers 6 學習筆記2 WMS服務避坑記錄
OpenLayers 3 之 加載天地圖
openlayers5-webpack 入門開發系列結合 turf.js 實現等值線(附源碼下載)
更多類似文章 >>
生活服務
分享 收藏 導長圖 關注 下載文章
綁定賬號成功
后續可登錄賬號暢享VIP特權!
如果VIP功能使用有故障,
可點擊這里聯系客服!

聯系客服

主站蜘蛛池模板: 恭城| 即墨市| 吉安市| 鄂尔多斯市| 墨竹工卡县| 渭南市| 全州县| 辽宁省| 贡山| 得荣县| 青阳县| 长汀县| 济宁市| 乾安县| 普洱| 琼海市| 金沙县| 嘉禾县| 孟村| 宜章县| 宜良县| 逊克县| 墨玉县| 邳州市| 武功县| 盐池县| 新闻| 兴隆县| 武隆县| 高安市| 班戈县| 隆化县| 信宜市| 保德县| 洪江市| 荆州市| 赤城县| 通辽市| 苍南县| 涡阳县| 临夏市|