рдирдорд╕реНрддреЗ
рдореИрдВрдиреЗ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдХреЛрдб рдЖрдЬрд╝рдорд╛рдпрд╛: рдпрд╣ div "# map-рдХреИрдирд╡рд╛рд╕" рд╕рд╛рдордЧреНрд░реА Google рдорд╛рдирдЪрд┐рддреНрд░ред
$ ( '# рдирдХреНрд╢реЗ-рдХреИрдирд╡рд╛рд╕')ред Html2canvas ({
onrendered: рдлрд╝рдВрдХреНрд╢рди (рдХреИрдирд╡рд╛рд╕) {
var img = рдХреИрдирд╡рд╛рд╕.toDataURL ("рдЫрд╡рд┐ / рдкреАрдПрдирдЬреА");
window.open (img);
}
});
}
рдЗрд╕ рдХреЛрдб рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдореБрдЭреЗ рдЦрд╛рд▓реА рдирдХреНрд╢рд╛ рдорд┐рд▓ рд░рд╣рд╛ рд╣реИред
рдХреГрдкрдпрд╛ Google рдорд╛рдирдЪрд┐рддреНрд░ рдХрд╛ рдЖрдЙрдЯрдкреБрдЯ рдвреВрдВрдвреЗрдВред
рдореБрдЭреЗ рдкрддрд╛ рд╣реИ рдХрд┐ рдЗрд╕ рдореБрджреНрджреЗ рд╕реЗ рдХреИрд╕реЗ рдЙрдмрд░рдирд╛ рд╣реИред
рдЖрдк рдЫрд╡рд┐рдпреЛрдВ (рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ рдЧреВрдЧрд▓ рдореИрдкреНрд╕ рдЯрд╛рдЗрд▓) рдХреЛ рдкреНрд░рд╕реНрддреБрдд рдирд╣реАрдВ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдЬреЛ рдЕрд▓рдЧ-рдЕрд▓рдЧ рдореВрд▓ рдХреЗ рддрд╣рдд рд░рд╣рддреЗ рд╣реИрдВ рдЬрдм рддрдХ рдХрд┐ рд╡реЗ рдХреЙрд░реНрд╕ рд╣реЗрдбрд░ рдХреЗ рд╕рд╛рде рд╕реЗрд╡рд╛ рдирд╣реАрдВ рдХрд░рддреЗ рд╣реИрдВред рдЬрд┐рд╕ рддрд░рд╣ рд╕реЗ рдЖрдк рдЗрд╕реЗ рдкрд╛рд░ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рд╡рд╣ рдЫрд╡рд┐рдпреЛрдВ рдХреЗ рд▓рд┐рдП рдПрдХ рдкреНрд░реЙрдХреНрд╕реА рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рд╣реИред
рдореИрдВрдиреЗ php рдкреНрд░реЙрдХреНрд╕реА рд╕рд░реНрд╡рд░ рдХреЗ рд╕рд╛рде рдкреНрд░рдпрд╛рд╕ рдХрд┐рдпрд╛ рд╣реИ рд▓реЗрдХрд┐рди рддреНрд░реБрдЯрд┐ рдХрд╛ рд╕рд╛рдордирд╛ рдХрд░рдирд╛ рдкрдбрд╝ рд░рд╣рд╛ рд╣реИ: "рдЕрдирдХреИрдкреНрдб
SecurityError: 'HTMLCanvasElement' рдкрд░ 'toDataURL' рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░рдиреЗ рдореЗрдВ рд╡рд┐рдлрд▓:
рджрд╛рдЧреА рдХреИрдирд╡рд╕ рдХрд╛ рдирд┐рд░реНрдпрд╛рдд рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред "
рдореИрдВрдиреЗ рдпрд╣ рдкреНрд░реЙрдХреНрд╕реА рд╕рд░реНрд╡рд░ рдЖрдЬрд╝рдорд╛рдпрд╛ рд╣реИ:
https://github.com/brcontainer/html2canvas-php-proxy ,
рдЙрдкрд░реЛрдХреНрдд рдкреНрд░реЙрдХреНрд╕реА рд╕рд░реНрд╡рд░ рдХреЗ рд╕рд╛рде рдореИрдВрдиреЗ Google рдорд╛рдирдЪрд┐рддреНрд░ рджрд┐рд╢рд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рд╣реИ:
https://developers.google.com/maps/documentation/javascript/examples/directions-simple
рд╢рдирд┐рд╡рд╛рд░, 13 рджрд┐рд╕рдВрдмрд░ 2014 рдХреЛ 11:11 рдмрдЬреЗ, рдирд┐рдХрд▓реНрд╕ рд╡реЙрди рд╣рд░реНрдЯрдЬрди <
рд╕реВрдЪрдирд╛рдПрдВ@github.com> рдиреЗ рд▓рд┐рдЦрд╛:
рдЖрдк рдЫрд╡рд┐рдпреЛрдВ (рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ рдЧреВрдЧрд▓ рдореИрдкреНрд╕ рдЯрд╛рдЗрд▓) рдХреЛ рдкреНрд░рд╕реНрддреБрдд рдирд╣реАрдВ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдЬреЛ рдиреАрдЪреЗ рд░рд╣рддреЗ рд╣реИрдВ
рдЕрд▓рдЧ-рдЕрд▓рдЧ рдореВрд▓ рдЬрдм рддрдХ рдЙрдиреНрд╣реЗрдВ рдХреЛрд░реНрд╕реЗрдЬ рд╣реЗрдбрд░ рдХреЗ рд╕рд╛рде рдкрд░реЛрд╕рд╛ рдирд╣реАрдВ рдЬрд╛рддрд╛ рд╣реИ
https://developer.mozilla.org/en-US/docs/Web/HTTP/Access_control_CORSред
рдЬрд┐рд╕ рддрд░рд╣ рд╕реЗ рдЖрдк рдЗрд╕реЗ рдкрд╛рд░ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рд╡рд╣ рдЫрд╡рд┐рдпреЛрдВ рдХреЗ рд▓рд┐рдП рдПрдХ рдкреНрд░реЙрдХреНрд╕реА рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рд╣реИред-
рдЗрд╕ рдИрдореЗрд▓ рдХрд╛ рдЙрддреНрддрд░ рд╕реАрдзреЗ рджреЗрдВ рдпрд╛ рдЗрд╕реЗ GitHub рдкрд░ рджреЗрдЦреЗрдВ
https://github.com/niklasvh/html2canvas/issues/485#issuecomment -66884354
ред
_рд╣рд╛рд░реНрджрд┐рдХ рд╢рд╣рд╛_
рдореИрдВ рдЙрд╕реА рдореБрджреНрджреЗ рдХрд╛ рд╕рд╛рдордирд╛ рдХрд░ рд░рд╣рд╛ рд╣реВрдВред рдХреНрдпрд╛ рдЖрдкрдХреЛ рдЗрд╕рдХреЗ рд▓рд┐рдП рдХреЛрдИ рд╣рд▓ рдорд┐рд▓рд╛? рдореИрдВ HTML2canvas рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ Google рдорд╛рдирдЪрд┐рддреНрд░ рдХреЗ рд▓рд┐рдП рдПрдХ рд╕реНрдХреНрд░реАрдирд╢реЙрдЯ рдкреНрд░рд╛рдкреНрдд рдХрд░рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВред рдЖрдкрдХреЗ рдЙрддреНрддрд░ рдХреА рд╕рд░рд╛рд╣рдирд╛ рдХрд░рддреЗ рд╣реИрдВред
рдЯрдХреНрдХрд░ред рдХреЛрдИ рд╕реБрдзрд╛рд░?
рд╡рд┐рдХрд▓реНрдкреЛрдВ рдореЗрдВ useCORS: true
рдХрд░рдирд╛ рдореЗрд░реЗ рд▓рд┐рдП рд╕рдорд╕реНрдпрд╛ рддрдп рдХрд┐рдпрд╛ред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, allowTaint: false
ред рдпрджрд┐ рдЖрдк рд╕рдорд╛рд░реЛрд╣ рдХреЛ рдЕрдВрдЬрд╛рдо рдпрд╣ рдорджрдж рдорд┐рд▓реЗрдЧреА рдХреЗ рдмрд╛рдж рд╕рднреА рдЯрд╛рдЗрд▓ рджрд┐рдЦрд╛рдИ рджреЗ рд░рд╣реЗ рд╣реИрдВ, рддреЛ рдЖрдк рд╕реБрди рд╕рдХрддреЗ рд╣реИрдВ tilesloaded
рдФрд░ рдирд┐рд╖реНрдкрд╛рджрд┐рдд html2canvas
рдХрд┐ рдЙрд╕рдХреЗ рдмрд╛рдж рдХреНрдпрд╛ рд╣реЛрддрд╛ред
рдореИрдВ рдЙрд╕реА рдореБрджреНрджреЗ рдХрд╛ рд╕рд╛рдордирд╛ рдХрд░ рд░рд╣рд╛ рд╣реВрдВред рдореИрдВрдиреЗ useCORS рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХреА: рд╕рдЪ рдФрд░ рднрддреНрддрд╛: рдорд╛рдирдЪрд┐рддреНрд░ рд╡рд┐рдХрд▓реНрдкреЛрдВ рдореЗрдВ рдЧрд▓рдд рд╣реИ рд▓реЗрдХрд┐рди рдЗрд╕рд╕реЗ рдХреЛрдИ рдлрд╛рдпрджрд╛ рдирд╣реАрдВ рд╣реБрдЖред рдореИрдВ рдкреЗрдЬ рд▓реЛрдб рд╣реЛрдиреЗ рдХреЗ рдмрд╛рдж рд╣реА рд╕реНрдХреНрд░реАрдирд╢реЙрдЯ рд▓реЗрдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░ рд░рд╣рд╛ рд╣реВрдВред рдХреНрдпрд╛ рдореБрдЭреЗ рдХреБрдЫ рдпрд╛рдж рдЖ рд░рд╣рд╛ рд╣реИ?
Google рдорд╛рдирдЪрд┐рддреНрд░ рдХреЗ рд╕реНрдХреНрд░реАрдирд╢реЙрдЯ рд▓реЗрддреЗ рд╕рдордп рдореБрдЭреЗ рдПрдХ рд╕рдорд╕реНрдпрд╛ рдорд┐рд▓ рд░рд╣реА рд╣реИ, рдореБрдЭреЗ рдпрд╣ рддреНрд░реБрдЯрд┐ рдорд┐рд▓реА:
ERROR Error: Uncaught (in promise): InvalidStateError: Failed to execute 'drawImage' on 'CanvasRenderingContext2D': The image argument is a canvas element with a width or height of 0.
Error: Failed to execute 'drawImage' on 'CanvasRenderingContext2D': The image argument is a canvas element with a width or height of 0.
at CanvasRenderer.<anonymous> (html2canvas.js:6289)
at step (html2canvas.js:83)
at Object.next (html2canvas.js:64)
at fulfilled (html2canvas.js:54)
at ZoneDelegate.invoke (zone-evergreen.js:365)
at Object.onInvoke (core.js:39698)
at ZoneDelegate.invoke (zone-evergreen.js:364)
at Zone.run (zone-evergreen.js:124)
at zone-evergreen.js:851
at ZoneDelegate.invokeTask (zone-evergreen.js:400)
at resolvePromise (zone-evergreen.js:793)
at resolvePromise (zone-evergreen.js:752)
at zone-evergreen.js:854
at ZoneDelegate.invokeTask (zone-evergreen.js:400)
at Object.onInvokeTask (core.js:39679)
at ZoneDelegate.invokeTask (zone-evergreen.js:399)
at Zone.runTask (zone-evergreen.js:168)
at drainMicroTaskQueue (zone-evergreen.js:570)
at invokeTask (zone-evergreen.js:485)
at ZoneTask.invoke (zone-evergreen.js:470)
рдХреГрдкрдпрд╛, рдпрд╣ рдмрд╣реБрдд рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╣реИред
рд╕рдмрд╕реЗ рдЙрдкрдпреЛрдЧреА рдЯрд┐рдкреНрдкрдгреА
рд╡рд┐рдХрд▓реНрдкреЛрдВ рдореЗрдВ
useCORS: true
рдХрд░рдирд╛ рдореЗрд░реЗ рд▓рд┐рдП рд╕рдорд╕реНрдпрд╛ рддрдп рдХрд┐рдпрд╛ред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛,allowTaint: false
ред рдпрджрд┐ рдЖрдк рд╕рдорд╛рд░реЛрд╣ рдХреЛ рдЕрдВрдЬрд╛рдо рдпрд╣ рдорджрдж рдорд┐рд▓реЗрдЧреА рдХреЗ рдмрд╛рдж рд╕рднреА рдЯрд╛рдЗрд▓ рджрд┐рдЦрд╛рдИ рджреЗ рд░рд╣реЗ рд╣реИрдВ, рддреЛ рдЖрдк рд╕реБрди рд╕рдХрддреЗ рд╣реИрдВtilesloaded
рдФрд░ рдирд┐рд╖реНрдкрд╛рджрд┐рддhtml2canvas
рдХрд┐ рдЙрд╕рдХреЗ рдмрд╛рдж рдХреНрдпрд╛ рд╣реЛрддрд╛ред