λꡬλ μ§ μ λ¨μ§μ ν¨κ» html2canvasλ₯Ό μ¬μ©νλ €κ³ μλν μ μ΄ μμ΅λκΉ? Google μ§λμμ μλνλλ‘ html2canvasλ₯Ό μ¬μ©ν μ μμμ§λ§ μ΄μ μ λ¨μ§μμ μλνλλ‘ ν΄μΌ ν©λλ€. μ§λλ₯Ό μΌμͺ½, μ€λ₯Έμͺ½, μ λλ μλλ‘ μ΄λν λ μ λ¨μ§μμ μΌλΆ νμΌμ΄ λλ½λμμ΅λλ€. λν λ μ΄μ μ€λ²λ μ΄κ° νμλμ§ μμ΅λλ€. λλ½λ νμΌ λ¬Έμ λ₯Ό νμνκΈ° μν΄ μ‘°μ‘ν jsfiddleμ λ§λ€μμ΅λλ€. λν λ΄ μ½λμ μ€ν¬λ¦° μ·μ΄ 첨λΆλμ΄ μμ΅λλ€.
http://jsfiddle.net μ μ¬μ©νμ¬ λ¬Έμ μ μλ₯Ό μ 곡νμμμ€.
jsfiddleμ μΆκ°νμ΅λλ€. https://jsfiddle.net/japiasente/7ybndo5L/
μλνλ €λ©΄ λͺ κ°μ§ μΆμ ν ν΄νΉμ΄ νμν©λλ€. λ€μμ μμ μ¬νμ΄ μλ κ°λ¨ν μμ λλ€.
λͺ κ°μ§ λ¬Έμ κ° μμ΅λλ€.
λ€μμ κ³ μ λ²μ μ
λλ€.
http://jsfiddle.net/oo2yms1h/
μμ§ ν΄κ²°νμ§ λͺ»ν λ¬Έμ κ° νλ μμ΅λλ€. μ§λλ₯Ό ν¨λνμ¬ μ μ΄ μ€λ₯Έμͺ½ κ°μ₯μ리 κ·Όμ²μ μ€λλ‘ νλ©΄ μΊλ²μ€μ νμλμ§ μμ΅λλ€. κ·Έλ¬λ λλ κ·Έκ²μ΄ λ³ν μ μ html2canvas ν΄λ¦¬νμ λ λ€λ₯Έ κ²°κ³ΌλΌκ³ μΆμΈ‘νκ³ μμ΅λλ€.
ν κ°μ§ μΆκ° μ¬ν: κΈ°λ³Έ μ λ¨μ§ λ§μ»€λ cdn.leaflet.comμμ νΈμ€ν λλ μ΄λ―Έμ§λ‘, CORS μ€λ₯κ° λ°μνμ¬ μΊλ²μ€μ νμλμ§ μμ΅λλ€. html2canvasμ ν¨κ» μ¬μ©νλ μ¬λμ μμ΄μ½ μ체λ₯Ό νΈμ€ν νκ±°λ λ€λ₯Έ λ§μ»€ μ€νμΌλ‘ μ νν΄μΌ ν©λλ€.
JAPiasente, 3λ²μ μμ μ¬νμ μ μ©νμ¬ νμΌ λ° ν¨λ λ¬Έμ λ₯Ό ν΄κ²°ν μ μλ κ² κ°μ΅λλ€. λν κ·νμ λ§μ»€λ SVG κ²½λ‘μ΄λ©° 2λ²μ λ΄ λΌμΈκ³Ό λμΌν μ΄μ€ λ³ν λ¬Έμ λ₯Ό κ²ͺκ³ μλ κ² κ°μ΅λλ€. μΌμͺ½ μλ¨μ λ무 λ©λ¦¬ νμλ©λλ€. λ€μμ μ΄λ¬ν λ³κ²½ μ¬νμ΄ μ μ©λ λ²μ μ λλ€.
https://jsfiddle.net/6tn0zy48/
λ§μ»€κ° μ§λ νλ¨λ³΄λ€ λ μλ‘ μ리λ κ²μ μ μΈνκ³ λͺ¨λ κ²μ΄ μ¬λ°λ₯Έ μμΉμ νμλ©λλ€. μ κ° μ¬μ ν μμ νκ³ μλ λμΌν λ¬Έμ μΈ κ² κ°μ΅λλ€.
λ§μ§λ§ λ¨μ λ¬Έμ λ₯Ό μμ νλ κ²μ μ΄λ ΅μ§ μμμ΅λλ€. λ³νμ 0μΌλ‘ μ€μ νκ³ λμ μΌμͺ½κ³Ό μμͺ½μ μ¬μ©νλ λ¬Έμ μμ΅λλ€.
λ΄ κ°λ¨ν μκ° μ
λ°μ΄νΈλμμ΅λλ€.
http://jsfiddle.net/oo2yms1h/1/
μ§λμ λν μμ μμ μ¬ν:
https://jsfiddle.net/6tn0zy48/1/
Chromeμμ μμ νκ³ μμλλ° Firefox λ° IEμμ μμ μ¬νμ΄ μλνμ§ μλλ€λ κ²μ μκ² λμμ΅λλ€. κ·Έλ€μ λ³ν μ€νμΌμ translate3d λμ translateλ‘ μ 곡νκ³ λ΄ μ½λλ κ·Έκ²μ΄ νμ translate3dμΌ κ²μ΄λΌκ³ κ°μ νμ΅λλ€. κ·Έλ¦¬κ³ Chromeμμμ²λΌ μΌμͺ½κ³Ό μμͺ½ λμ λ²μμ μ¬μ©νμ¬ νμΌμ λ°°μΉνμ΅λλ€. μ΄ μ λ°μ΄νΈλ μμ λ μΈ κ°μ§ λΈλΌμ°μ λͺ¨λμ λν΄ μμ λμμ΅λλ€. νμΌ ββλ° λ§μ»€ μμ΄μ½μ μΈ κ°μ§ λͺ¨λμμ μλνμ§λ§ μ¬μ ν Firefox λ° IEμμ SVG κ²½λ‘λ₯Ό νμν μ μμ΅λλ€.
IEλ μ μ νμνκΈ° μ μ html2canvas.svgκ° νμνμΌλ©° SVG λ μ΄μ΄μ λ³ν λλ μΌμͺ½/μλ¨ μμ±μ΄ μ€μ λμ΄ μμ λλ μλνμ§ μμ΅λλ€. μ΄ μμ λ IEμμ μλνλ©° κ±°μ Firefoxμμ μλν©λλ€.
http://jsfiddle.net/oo2yms1h/5/
νμ΄μ΄νμ€μ μ€μ νμνλ €λ©΄ #648μ μΈκΈλ html2canvasλ₯Ό λ³κ²½νμ¬ base64 μΈμ½λ©μΌλ‘ μ νν΄μΌ ν©λλ€.
https://github.com/niklasvh/html2canvas/pull/648/files
μ§κΈκΉμ§ λμμ£Όμ μ κ°μ¬ν©λλ€. μ΄μ μ μΌν λ§μ§λ§ λ¬Έμ λ κ·Έ μμ svg μ€λ²λ μ΄κ° μμΌλ©΄ IEκ° μ λλ‘ μλνμ§ μλλ€λ κ²μ λλ€. μ§λμ svg μ€λ²λ μ΄λ ν¬λ‘¬μμ μ μλν©λλ€. μ΄λ€ μμ΄λμ΄?
@CraigVA λΉμ μ νλ₯ν©λλ€. μ΄ λ¬Έμ λ₯Ό ν΄κ²°νκΈ° μν΄ μ§λ μ΄νμ 보λμ΅λλ€. λλ λΉμ μ jsfiddlesλ₯Ό λ μΌμ° λ§λ¬λλΌλ©΄ μ’μμ κ²μ λλ€. κ°μ¬ ν΄μ!!!
@CraigVA μ루μ μ μ¬μ©νλ λ° λ¬Έμ κ° μμλλ° μ§λλ₯Ό μ ν ν¨λνλ©΄ μ€λ²λ μ΄κ° νμΌμ μ€μ¬μμ λ²μ΄λ¬μ΅λλ€.
μ΄λ₯Ό λ°©μ§νκΈ° μν΄ λ΄κ° ν μΌμ μ μ λμ λ°λ€μ λ€λ₯Έ μ₯μλ‘ λ·°λ₯Ό μ€μ ν λ€μ λ·°λ₯Ό μλ μμΉλ‘ λ€μ μ€μ νλ redraw() ν¨μμμ΅λλ€. μ μλν©λλ€.
function redraw() {
var lat_tmp = map.getCenter().lat;
var lng_tmp = map.getCenter().lng;
map.setView([-66.22149259832975, -1.142578125]);
setTimeout(function () {
waitForTilesToLoad()
}, 50000);
map.setView([lat_tmp, lng_tmp]);
}
λκ΅°κ°μ΄ λ¬Έμ λ₯Ό κ²ͺκ³ λμΌν λ¬Έμ κ° λ°μνλ κ²½μ°.
μλ νμΈμ, μ΄ ν΄νΉ λλΆμ Path λ μ΄μ΄μ ν° TileLayersλ₯Ό μ μΈνκ³ λ μ μλν©λλ€.
κ²½λ‘ λ μ΄μ΄(ν΄λ¦¬κ³€/ν΄λ¦¬λΌμΈ)μ μΌλΆκ° μλ μ§λ κ²½κ³λ₯Ό λ²μ΄λλ©΄ μ§λλ₯Ό μ΄λν λ html2canvasμ μν΄ μ립λλ€.
http://jsfiddle.net/c8LL4qfo/ μμ λ κΈ΄ ν΄λ¦¬λΌμΈμΌλ‘ μ½λλ₯Ό μ
λ°μ΄νΈνμ΅λλ€. μ§λλ₯Ό μ΄λνλ €κ³ νλ©΄ μΊλ²μ€μμ μ μ΄ μλ¦° κ²μ λ³Ό μ μμ΅λλ€.
μ΄ λ²κ·Έλ₯Ό ν΄κ²°νλ λ°©λ²μ λν μμ΄λμ΄κ° μμ΅λκΉ?
λ λ²μ§Έ μμ : tileLayersκ° λ무 ν° κ²½μ° html2canvasλ μ§λκ° λ λλ§λ λκΉμ§ κΈ°λ€λ¦¬μ§ μμ΅λλ€. UseCors=trueμΈ κ²½μ°μλ λ§μ°¬κ°μ§μ λλ€. tileLayersκ° λ‘λλ λκΉμ§ κΈ°λ€λ¦΄ λ°©λ²μ΄ μμ΅λκΉ? load μ΄λ²€νΈλ₯Ό μ¬μ©νλ €κ³ μκ°νμ§λ§ μ΄λ»κ² ν μ μλμ§ λͺ¨λ₯΄κ² μ΅λλ€.
κ°μ¬
λλ Reactλ₯Ό μ¬μ©νμ¬ μ΄ λ¬Έμ λ₯Ό ν΄κ²°νμ΅λλ€. μ§λλ₯Ό μ΄λν ν μ λ¨μ§ κ΅¬μ± μμκ° μ¬μ€μ λμ΄ λ§μ§λ§ μ€μκ³Ό νλ/μΆμ μμ€μ μ μ§ν©λλ€. μ 곡λ μ§λκ° μ μ§λμ΄λ―λ‘ html2canvasμ λ μ΄μ μΆ©λνμ§ μμ΅λλ€.
μ’μ, μ¬κΈ°μμ jsfiddle μ½λλ₯Ό μ
λ°μ΄νΈνμ΅λλ€. http://jsfiddle.net/2zkLkLxc/
V1.0.0μλ λ μ΄μ ν΄λ¦¬ν λ¬Έμ κ° μμ§λ§ μ§λλ₯Ό μ΄λν λ μμ΄μ½ ν΄λ¦¬ν(μΈμ λ μ§) λ° νμΌ ν΄λ¦¬νκ³Ό κ΄λ ¨λ λ¬Έμ κ° μμ΅λλ€.
νμΌμ ν΅μ μ κ±°νλ €κ³ μλνμ§λ§ μ무 κ²λ λ³κ²½λμ§ μμμ΅λλ€.
λ΄ μ½λμμ v.1.0.0μΌλ‘ μ λ°μ΄νΈνκ³ μμ΄μ½ ν΄λ¦¬νμ΄ μκΈ° λλ¬Έμ μ΄μν©λλ€.
μ΄ νΈλ μμ μμ μΆκ° μ 보 μμ²μ λν μλ΅μ΄ μμκΈ° λλ¬Έμ μλμΌλ‘ μ’ λ£λμμ΅λλ€. νμ¬ λ¬Έμ μ μλ μ 보λ§μΌλ‘λ μ‘°μΉλ₯Ό μ·¨νκΈ°μ μΆ©λΆν μ λ³΄κ° μμ΅λλ€. λ μ‘°μ¬ν μ μλλ‘ νμν λ΅λ³μ΄ μκ±°λ μ°ΎμΌλ©΄ μ°λ½ν΄ μ£Όμμμ€.
κ°μ λ¬Έμ κ° μμ§λ§ Google Map λμ Leaflet Mapμ μ¬μ©νμ΅λλ€.
μ½λλ μλμ μμ΅λλ€
var λ³ν=$(".리νλ¦Ώ μ§λ μ°½").css("λ³ν");
if (λ³ν) {
var c = transform.split(",");
var d = parseFloat(c[4]);
var h = parseFloat(c[5]);
$(".leaflet-map-pane").css({
"λ³ν": "μμ",
"μΌμͺ½": d,
"μλ¨": h
})
}
html2canvas(document.body).then(ν¨μ(μΊλ²μ€){
$(".leaflet-map-pane").css({
μΌμͺ½: 0,
μλ¨: 0,
"λ³ν": λ³ν
})
} // μ¬κΈ°μ html2canvas 1.0.0-alpha.9κ° μ¬μ©λμμ΅λλ€.
@CraigVA μ λ§ κ°μ¬ν©λλ€!
ν΄λ¦¬ν λ¬Έμ μ κ΄λ ¨νμ¬ νμ¬ stackoverflowμ λ¬Έμ κ° μμ΅λλ€. λλ μ λ¨μ§ 1.3.1μ μ¬μ©νκ³ μμ΅λλ€. λκ΅°κ° λμκ² μ§μΉ¨μ μ 곡ν μ μλ€λ©΄ λλ¨ν κ°μ¬νκ² μ΅λλ€. λ¬Έμ λ μ¬κΈ°μ μμ΅λλ€.
@niklasvh λ¬Έμ λ μ¬μ ν μ‘΄μ¬ν©λλ€: http://jsfiddle.net/x3jzsg9b/4/
λ¬Έμ λ μ¬μ ν μ‘΄μ¬ν©λλ€: https://jsfiddle.net/x512pgjt/269/
@Amarandon @bomba1990
μ§λμμ λ λλ¬ ν¨λ©μ μ κ±°ν΄ λ³΄μΈμ. κ·Έκ²μ λλ₯Ό μν΄ μΌνμ΅λλ€.
map.getRenderer(μ§λ).options.padding = 0;
μ΄κ²μ μ¬λμ€λ½κ² μΌνμ΅λλ€!
html2canvas(document.querySelector("#mapid"), {
allowTaint: μ¬μ€,
useCORS: μ¬μ€
}).then(μΊλ²μ€ => {
document.body.appendChild(μΊλ²μ€)
});
κ°μ₯ μ μ©ν λκΈ
μλνλ €λ©΄ λͺ κ°μ§ μΆμ ν ν΄νΉμ΄ νμν©λλ€. λ€μμ μμ μ¬νμ΄ μλ κ°λ¨ν μμ λλ€.
http://jsfiddle.net/djwbra47/
λͺ κ°μ§ λ¬Έμ κ° μμ΅λλ€.
λ€μμ κ³ μ λ²μ μ λλ€.
http://jsfiddle.net/oo2yms1h/
μμ§ ν΄κ²°νμ§ λͺ»ν λ¬Έμ κ° νλ μμ΅λλ€. μ§λλ₯Ό ν¨λνμ¬ μ μ΄ μ€λ₯Έμͺ½ κ°μ₯μ리 κ·Όμ²μ μ€λλ‘ νλ©΄ μΊλ²μ€μ νμλμ§ μμ΅λλ€. κ·Έλ¬λ λλ κ·Έκ²μ΄ λ³ν μ μ html2canvas ν΄λ¦¬νμ λ λ€λ₯Έ κ²°κ³ΌλΌκ³ μΆμΈ‘νκ³ μμ΅λλ€.
ν κ°μ§ μΆκ° μ¬ν: κΈ°λ³Έ μ λ¨μ§ λ§μ»€λ cdn.leaflet.comμμ νΈμ€ν λλ μ΄λ―Έμ§λ‘, CORS μ€λ₯κ° λ°μνμ¬ μΊλ²μ€μ νμλμ§ μμ΅λλ€. html2canvasμ ν¨κ» μ¬μ©νλ μ¬λμ μμ΄μ½ μ체λ₯Ό νΈμ€ν νκ±°λ λ€λ₯Έ λ§μ»€ μ€νμΌλ‘ μ νν΄μΌ ν©λλ€.
JAPiasente, 3λ²μ μμ μ¬νμ μ μ©νμ¬ νμΌ λ° ν¨λ λ¬Έμ λ₯Ό ν΄κ²°ν μ μλ κ² κ°μ΅λλ€. λν κ·νμ λ§μ»€λ SVG κ²½λ‘μ΄λ©° 2λ²μ λ΄ λΌμΈκ³Ό λμΌν μ΄μ€ λ³ν λ¬Έμ λ₯Ό κ²ͺκ³ μλ κ² κ°μ΅λλ€. μΌμͺ½ μλ¨μ λ무 λ©λ¦¬ νμλ©λλ€. λ€μμ μ΄λ¬ν λ³κ²½ μ¬νμ΄ μ μ©λ λ²μ μ λλ€.
https://jsfiddle.net/6tn0zy48/
λ§μ»€κ° μ§λ νλ¨λ³΄λ€ λ μλ‘ μ리λ κ²μ μ μΈνκ³ λͺ¨λ κ²μ΄ μ¬λ°λ₯Έ μμΉμ νμλ©λλ€. μ κ° μ¬μ ν μμ νκ³ μλ λμΌν λ¬Έμ μΈ κ² κ°μ΅λλ€.