this.leafletMap = new L.Map( <element> , {
zoomControl: true,
dragging: this.isInDragMode,
touchZoom: false,
scrollWheelZoom: false,
doubleClickZoom: false,
tap: false,
}
L.tileLayer( 'http://{s}.tile.osm.org/{z}/{x}/{y}.png', {
attribution: '© <a href="http://osm.org/copyright">OpenStreetMap</a> contributors'
} ).addTo( this.leafletMap );
if (this.leafletMap ){
this.leafletMap.eachLayer(function(layer){
layer.remove();
});
this.leafletMap.remove();
this.leafletMap = null;
}
Uncaught TypeError: Cannot read property '_leaflet_pos' of undefined
http://playground-leaflet.rhcloud.com/ рдпрд╛ рдХрд┐рд╕реА рдЕрдиреНрдп jsfiddle рдЬреИрд╕реА рд╕рд╛рдЗрдЯ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ред
рдирдорд╕реНрддреЗ рдФрд░ рдЗрд╕ рдмрдЧ рдХреА рд░рд┐рдкреЛрд░реНрдЯ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╕рдордп рдирд┐рдХрд╛рд▓рдиреЗ рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рджред
рд╣рд╛рд▓рд╛рдБрдХрд┐, рдРрд╕рд╛ рдкреНрд░рддреАрдд рд╣реЛрддрд╛ рд╣реИ рдХрд┐ рд╕рдорд╕реНрдпрд╛ рдХреЛ рдкреБрди: рдЙрддреНрдкрдиреНрди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЖрдкрдХреЗ рджреНрд╡рд╛рд░рд╛ рдмрддрд╛рдП рдЧрдП рдЪрд░рдгреЛрдВ рдореЗрдВ рдХреБрдЫ рдЧреБрдо рд╣реИред рдореИрдВрдиреЗ рдЙрдкрд░реЛрдХреНрдд рдЪрд░рдгреЛрдВ рдХреЗ рд╕рд╛рде-рд╕рд╛рде рдПрдХ рдЦреЗрд▓ рдХрд╛ рдореИрджрд╛рди рдЙрджрд╛рд╣рд░рдг рднреА рд╕реНрдерд╛рдкрд┐рдд рдХрд┐рдпрд╛: http://playground-leaflet.rhcloud.com/rezop/edit?html ,output
рдЗрд╕ рдЙрджрд╛рд╣рд░рдг рдореЗрдВ, рдорд╛рдирдЪрд┐рддреНрд░ рдХреЛ рд╣рдЯрд╛ рджрд┐рдП рдЬрд╛рдиреЗ рдХреЗ рдмрд╛рдж рдореБрдЭреЗ рдХреЛрдИ рддреНрд░реБрдЯрд┐ рдирд╣реАрдВ рджрд┐рдЦрд╛рдИ рджреЗ рд░рд╣реА рд╣реИ, рдЗрд╕рд▓рд┐рдП рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рдХреБрдЫ рдФрд░ рдЪрд▓ рд░рд╣рд╛ рд╣реИ рдЬреЛ рдЖрдкрдХреЛ рджрд┐рдЦрд╛рдИ рджреЗрдиреЗ рд╡рд╛рд▓реА рд╕рдорд╕реНрдпрд╛ рдХрд╛ рдХрд╛рд░рдг рдмрдирддрд╛ рд╣реИред рдХреНрдпрд╛ рдЖрдк рдХреГрдкрдпрд╛ рдЕрдзрд┐рдХ рд╡рд┐рд╡рд░рдг рдкреНрд░рджрд╛рди рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рддрд╛рдХрд┐ рд╣рдо рдЗрд╕реЗ рдЯреНрд░реИрдХ рдХрд░ рд╕рдХреЗрдВред
@perliedman рддреНрд╡рд░рд┐рдд рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдФрд░ рдЦреЗрд▓ рдХреЗ рдореИрджрд╛рди рдХреЗ рдЙрджрд╛рд╣рд░рдг рдХреЛ рдПрдХ рд╕рд╛рде рд░рдЦрдиреЗ рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рджред рдореИрдВ рдЙрд╕ рдкрд░ рдкреБрди: рдкреЗрд╢ рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рдирд╣реАрдВ рд╣реВрдВред рдХреБрдЫ рдФрд░ рдкрд░рд┐рджреГрд╢реНрдпреЛрдВ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░ рд░рд╣рд╛ рд╣реИред рдЬрдмрдХрд┐ рдореИрдВ рдЕрднреА рднреА рдЗрд╕реЗ рджреЗрдЦ рд░рд╣рд╛ рд╣реВрдБ, рдХреБрдЫ рдкреНрд░рд╢реНрди -
рдпрджрд┐ рдореИрдВ map.remove()
рдХрд░ рд░рд╣рд╛ рд╣реВрдВ, рддреЛ рдХреНрдпрд╛ рдореБрдЭреЗ рд╕реНрдкрд╖реНрдЯ рдкрд░рдд рд╣рдЯрд╛рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ? рдореЗрд░рд╛ рдЕрдиреБрдорд╛рди рд╣реИ, рдпрд╣ рдкрд░рдд рд╣рдЯрд╛рдиреЗ рдХрд╛ рднреА рдзреНрдпрд╛рди рд░рдЦреЗрдЧрд╛, рд▓реЗрдХрд┐рди рдХреНрдпрд╛ рдЖрдк рдкреБрд╖реНрдЯрд┐ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред
рдФрд░ рдЖрдкрдХреЗ рдкрд╛рд╕ рдЯрд╛рдЗрдордЖрдЙрдЯ рдХреЗ рддрд╣рдд map.remove() рд╣реЛрдиреЗ рдХрд╛ рдХрд╛рд░рдг рдпрд╣ рд╣реИ рдХрд┐ рдЙрджрд╛рд╣рд░рдг рдореЗрдВ рдЖрдк рдирд┐рд░реНрдорд╛рдг рдХреЗ рдареАрдХ рдмрд╛рдж рдорд╛рдирдЪрд┐рддреНрд░ рдХреЛ рдирд╖реНрдЯ рдХрд░ рд░рд╣реЗ рд╣реИрдВ, рдЕрдиреНрдпрдерд╛ рдЗрд╕реЗ рдЯрд╛рдЗрдордЖрдЙрдЯ рдХреЗ рд╕рд╛рде рд╕рдВрд▓рдЧреНрди рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИред рд╕рд╣реА?
рдпрд╛рдж рд░рдЦреЗрдВ, рдУрдкрди рд╕реЛрд░реНрд╕ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рддреЗ рд╕рдордп, _use_ рд╕реЛрд░реНрд╕! :рд╡рд┐рдВрдХ: рдЖрдкрдХреЗ рдкрд╣рд▓реЗ рдкреНрд░рд╢реНрди рдХрд╛ рдЙрддреНрддрд░ рджреЗрдиреЗ рдХреЗ рд▓рд┐рдП, _yes_, remove
рдкрд░рддреЛрдВ рдХреЛ рд╣рдЯрд╛ рджреЗрдЧрд╛: https://github.com/Leaflet/Leaflet/blob/master/src/map/Map.js#L731
рдореИрдВрдиреЗ рдЗрд╕реЗ рдЯрд╛рдЗрдордЖрдЙрдЯ рдореЗрдВ рдбрд╛рд▓рдиреЗ рдХрд╛ рдХрд╛рд░рдг рдпрд╣ рдерд╛ рдХрд┐ рдореЗрд░реЗ рдЙрджрд╛рд╣рд░рдг рдХреЛ рдереЛрдбрд╝рд╛ рдФрд░ рдпрдерд╛рд░реНрдерд╡рд╛рджреА рдмрдирд╛рдирд╛ рдерд╛, рдпрд╣ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░рдирд╛ рдХрд┐ рдЯрд╛рдЗрд▓ рдкрд░рдд рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рд▓реЛрдб рдХреА рдЧрдИ рдЯрд╛рдЗрд▓реЛрдВ рдХреЗ рд╕рд╛рде рдареАрдХ рд╕реЗ рд╢реБрд░реВ рдХреА рдЧрдИ рдереА, рдЙрджрд╛рд╣рд░рдг remove
рдХреЙрд▓ рдХреЛ рдбрд╛рд▓реЗ рдмрд┐рдирд╛ рд╣реА рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ рдПрдХ рдЯрд╛рдЗрдордЖрдЙрдЯ, рд▓реЗрдХрд┐рди рдпрд╣ рдПрдХ рдХреГрддреНрд░рд┐рдо рдкрд░реАрдХреНрд╖рдг рдЬреИрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИред
рдирдорд╕реНрддреЗ - рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдореИрдВ рднреА рдЗрд╕ рдореБрджреНрджреЗ рдХрд╛ рд╕рд╛рдордирд╛ рдХрд░ рд░рд╣рд╛ рд╣реВрдВред рдпрд╣рд╛рдБ рдореЗрд░рд╛ рдореВрд▓ рдЙрдкрдпреЛрдЧ-рдорд╛рдорд▓рд╛ рд╣реИ:
рдореИрдВ рдПрдХ рд╡рд╛рд╕реНрддрд╡рд┐рдХ рдорд╛рдирдЪрд┐рддреНрд░ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рдиреЗ рдХреЗ рд╡рд┐рд░реЛрдз рдореЗрдВ рдПрдХрд╛рдзрд┐рдХ рдкреГрд╖реНрдареЛрдВ/рд╕рддрд╣реЛрдВ рд╡рд╛рд▓реА рд╡рд╕реНрддреБрдУрдВ рдХреЗ рд▓рд┐рдП рдПрдХ рджрд░реНрд╢рдХ рдШрдЯрдХ ( рдкрддреНрд░рдХ-рдЖрдИрдЖрдИрдЖрдИрдПрдл рдкреНрд▓рдЧрдЗрди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣рд╛ рд╣реВрдВ, рд▓реЗрдХрд┐рди рдореБрдЭреЗ рдирд╣реАрдВ рд▓рдЧрддрд╛ рдХрд┐ рдпрд╣рд╛рдВ рдХреБрдЫ рднреА рдкреНрд░рднрд╛рд╡ рдкрдбрд╝рддрд╛ рд╣реИ)ред рдЬрдм рджрд░реНрд╢рдХ рд▓реЛрдб рд╣реЛрддрд╛ рд╣реИ, рддреЛ рдердВрдмрдиреЗрд▓ рдХреА рдПрдХ рд╢реНрд░реГрдВрдЦрд▓рд╛ рд╣реЛрддреА рд╣реИ рдЬрд┐рд╕реЗ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдЕрджреНрдпрддрди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХреНрд▓рд┐рдХ рдХрд░ рд╕рдХрддрд╛ рд╣реИ рдХрд┐ UI рдХреЗ рдордзреНрдп рдХреНрд╖реЗрддреНрд░ рдореЗрдВ рдХрд┐рд╕реА рдСрдмреНрдЬреЗрдХреНрдЯ рдХрд╛ рдХреМрди рд╕рд╛ рджреГрд╢реНрдп рдкреНрд░рджрд░реНрд╢рд┐рдд рд╣реЛрддрд╛ рд╣реИред
рдЬрдм рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рджреГрд╢реНрдп рдмрджрд▓рддрд╛ рд╣реИ, рддреЛ рдореИрдВ рдирдП рджреГрд╢реНрдп рдХреЗ рд▓рд┐рдП рдПрдХ рдирдпрд╛ рдорд╛рдирдЪрд┐рддреНрд░ рд╕реЗрдЯ рдХрд░рдиреЗ рд╕реЗ рдкрд╣рд▓реЗ map.remove()
рдХреЙрд▓ рдХрд░ рд░рд╣рд╛ рд╣реВрдВред рдирдпрд╛ рдирдХреНрд╢рд╛ рдкреБрд░рд╛рдиреЗ рд╡рд╛рд▓реЗ (рдПрдХ рдЖрдИрдбреА рдХреЗ рд╕рд╛рде рдПрдХ div) рдХреЗ рд╕рдорд╛рди DOM рддрддреНрд╡ рдкрд░ рдмрдирд╛рдпрд╛ рдЧрдпрд╛ рд╣реИ, рдФрд░ рдореИрдВ рдХрд┐рд╕реА рднреА рддрд░рд╣ рд╕реЗ DOM рдХреЛ рдХреИрдЯрд▓реЙрдЧ рдХреЗ рдмрд╛рд╣рд░ рд╕рдВрд╢реЛрдзрд┐рдд рдирд╣реАрдВ рдХрд░ рд░рд╣рд╛ рд╣реВрдБред
рдкреНрд░рд╛рд░рдВрднрд┐рдХ рджреГрд╢реНрдп рдореЗрдВ рд╕рдм рдХреБрдЫ рдареАрдХ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред рд▓реЗрдХрд┐рди map.remove()
рдкрд░ рдХреЙрд▓ рдХрд░рдиреЗ рдФрд░ рдПрдХ рдирдпрд╛ рджреГрд╢реНрдп рджрд┐рдЦрд╛рдиреЗ рдХреЗ рдмрд╛рдж, рдХрдВрд╕реЛрд▓ рд╢рд┐рдХрд╛рдпрдд рдХрд░рддрд╛ рд╣реИ: Cannot read property '_leaflet_pos' of undefined
рдЬрдм рднреА рдирдХреНрд╢рд╛ рдЦреАрдВрдЪрд╛ рдпрд╛ рдЬрд╝реВрдо рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред
рдореИрдВ рдХрд┐рд╕реА рдмрд┐рдВрджреБ рдкрд░ рдПрдХ рдиреНрдпреВрдирддрдо рдЙрджрд╛рд╣рд░рдг рдкреЛрд╕реНрдЯ рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░ рд╕рдХрддрд╛ рд╣реВрдВ, рд▓реЗрдХрд┐рди рдпрд╣ рд╡рд╣реА рд╕рдорд╕реНрдпрд╛ рдкреНрд░рддреАрдд рд╣реЛрддреА рд╣реИред рдпрд╣ рддреНрд░реБрдЯрд┐ рдХреНрд░реЛрдо рдореЗрдВ рдЖрддреА рд╣реИ рд▓реЗрдХрд┐рди рдлрд╝рд╛рдпрд░рдлрд╝реЙрдХреНрд╕ рдореЗрдВ рдирд╣реАрдВред
@egardner рд╣рд╛рдБ, рдХреГрдкрдпрд╛ рдПрдХ рдЙрджрд╛рд╣рд░рдг рдмрдирд╛рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░реЗрдВ рдЬреЛ рдЗрд╕реЗ рдкреБрди: рдкреЗрд╢ рдХрд░реЗ!
@egardner рдкрд╣рд▓реЗ рд╕реНрдерд┐рд░ рдЗрд▓реЗрдХреНрдЯреНрд░реЙрди (рдХреНрд░реЛрдорд┐рдпрдо + рдиреЛрдб) рдРрдк рдкрд░ рдареАрдХ рд╡реИрд╕реА рд╣реА рд╕рдорд╕реНрдпрд╛ рдереА, рдЬрд┐рд╕ рдкрд░ рдореБрдЭреЗ рд╡рд╛рдкрд╕ рд▓реМрдЯрдирд╛ рдкрдбрд╝рд╛:
"рдкрддреНрд░рдХ": "1.0.0",
"leaflet.markercluster": "1.0.0-rc.1.0"
рддреНрд░реБрдЯрд┐ рдХреЛ рджреВрд░ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП 1.2.0 рд╕реЗ рдЕрдкрд░рд┐рднрд╛рд╖рд┐рдд рдХреА рд╕рдВрдкрддреНрддрд┐ '_leaflet_pos' рдирд╣реАрдВ рдкрдврд╝ рд╕рдХрддрд╛ рд╣реИ
рдпрд╣ рдЙрд╕реА DOM рдПрд▓рд┐рдореЗрдВрдЯ рдореЗрдВ рдореИрдк рдХреЛ рдлрд┐рд░ рд╕реЗ рдмрдирд╛рдиреЗ рд╕реЗ рдкрд╣рд▓реЗ map.remove() рдХреЗ рдмрд╛рдж рднреА рдерд╛ред рдореЗрд░реЗ рдкрд╛рд╕ рдЕрднреА рд╕рдордп рдирд╣реАрдВ рд╣реИ рдХрд┐ рдореИрдВ рд╢реЙрд░реНрдЯ рдЯрд░реНрдо рдкрд░ рдЙрджрд╛рд╣рд░рдг рдмрдирд╛рдКрдВ рдФрд░ рдЙрджрд╛рд╣рд░рдг рджреВрдВ
рд╣рдо рднреА рдЗрд╕реА рддрд░рд╣ рдХреА рд╕рдорд╕реНрдпрд╛ рдХрд╛ рд╕рд╛рдордирд╛ рдХрд░ рд░рд╣реЗ рд╣реИрдВ рдЬреЛ рдПрдХ рдорд╛рдирдЪрд┐рддреНрд░ рдХреЛ рдирд╖реНрдЯ рдХрд░рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░ рд░рд╣рд╛ рд╣реИ, рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рд╕рдВрджрд░реНрднреЛрдВ рдХреЛ рдкрдХрдбрд╝ рд░рд╣рд╛ рд╣реИ
рдореИрдВрдиреЗ рдКрдкрд░ рдЬреЛ рдХрд╣рд╛ рд╣реИ рдЙрд╕реЗ рдореИрдВ рджреЛрд╣рд░рд╛рдКрдВрдЧрд╛: рдЗрд╕ рдореБрджреНрджреЗ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдХреБрдЫ рднреА рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реЛрдиреЗ рдХреЗ рд▓рд┐рдП, рдХреГрдкрдпрд╛ рдПрдХ рдЙрджрд╛рд╣рд░рдг рдкреНрд░рджрд╛рди рдХрд░реЗрдВ рдЬреЛ рд╕рдорд╕реНрдпрд╛ рдХреЛ рдкреБрди: рдЙрддреНрдкрдиреНрди рдХрд░рддрд╛ рд╣реИред
рдирдорд╕реНрддреЗред рдореИрдВрдиреЗ рдЗрд╕ рддреНрд░реБрдЯрд┐ рдХреЛ рдПрдХ рдкрд╣реЗрд▓реА рдореЗрдВ рдкреБрди: рдкреЗрд╢ рдХрд┐рдпрд╛ рд╣реИред рд╕реАрдзреЗ рд╢рдмреНрджреЛрдВ рдореЗрдВ рдХрд╣реЗрдВ, рдпрджрд┐ рдЖрдк рдПрдХ div рддрддреНрд╡ рдХреЗ рдЕрдВрджрд░ рдПрдХ рдирдХреНрд╢рд╛ рдмрдирд╛рддреЗ рд╣реИрдВ, рддреЛ рдирд┐рдХрд╛рд▓реЗрдВ рд╡рд┐рдзрд┐ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВ, рдлрд┐рд░ рдЙрд╕реА div рдкрд░ рдорд╛рдирдЪрд┐рддреНрд░ рдХреЛ рджреЛрдмрд╛рд░рд╛ рджреЛрд╣рд░рд╛рдПрдВ, рдкреНрд░рддреНрдпреЗрдХ рдорд╛рдирдЪрд┐рддреНрд░ рдЪрд╛рд▓ рддрдм рдПрдХ рддреНрд░реБрдЯрд┐ рдЙрддреНрдкрдиреНрди рдХрд░реЗрдЧреА
рдзреНрдпрд╛рди рдореЗрдВ рди рдЖрдпрд╛ рд▓реЗрдЦрди рддреНрд░реБрдЯрд┐: рдЕрдкрд░рд┐рднрд╛рд╖рд┐рдд рдХреА рд╕рдВрдкрддреНрддрд┐ '_leaflet_pos' рдирд╣реАрдВ рдкрдврд╝ рд╕рдХрддрд╛ред
рдкреБрди: рдкреЗрд╢ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, my fiddle рдЦреЛрд▓реЗрдВ, рдорд╛рдирдЪрд┐рддреНрд░ рдирд┐рдХрд╛рд▓реЗрдВ рдкрд░ рдХреНрд▓рд┐рдХ рдХрд░реЗрдВ, рд╕реНрдерд╛рди рдорд╛рдирдЪрд┐рддреНрд░ рдкрд░ рдХреНрд▓рд┐рдХ рдХрд░реЗрдВ, рдлрд┐рд░ рдХрдВрд╕реЛрд▓ рдЦреЛрд▓реЗрдВ рдФрд░ рдорд╛рдирдЪрд┐рддреНрд░ рдХреЛ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд░реЗрдВред
http://jsfiddle.net/spydmobile/5hmadjnk/
рдзреНрдпрд╛рди рджреЗрдВ, рдпрд╣ рдХреЗрд╡рд▓ Chorme рдореЗрдВ рд╣реЛрддрд╛ рд╣реИ, FF рдореЗрдВ рдирд╣реАрдВ
рд╣рд╛рдБ рд╕реНрдкрд╛рдИрдбрдореЛрдмрд╛рдЗрд▓ рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рдж, рдпрд╣ рд╡рд╣реА рддреНрд░реБрдЯрд┐ рд╣реИ рдЬреЛ рдореИрдВ рдХреНрд░реЛрдо рдореЗрдВ рджреЗрдЦ рд░рд╣рд╛ рд╣реВрдВ рдЬреИрд╕рд╛ рдХрд┐ рдореИрдВрдиреЗ рдКрдкрд░ рдмрддрд╛рдпрд╛ рдерд╛
рдореБрдЭреЗ рд╡рд╣реА рддреНрд░реБрдЯрд┐ рджрд┐рдЦрд╛рдИ рджреЗ рд░рд╣реА рд╣реИ рд▓реЗрдХрд┐рди рдереЛрдбрд╝реЗ рдЕрд▓рдЧ рдЙрдкрдпреЛрдЧ рдХреЗ рдорд╛рдорд▓реЗ рдореЗрдВред invalidateSize
рдХреЙрд▓ рдХреЗ рдХрд╛рд░рдг рдЖрдХрд╛рд░ рдмрджрд▓рдиреЗ рдкрд░ рдПрдХ рд╣реА рддреНрд░реБрдЯрд┐ рдбрд╛рд▓реА рдЬрд╛рддреА рд╣реИ:
Uncaught TypeError: Cannot read property '_leaflet_pos' of undefined
at getPosition (leaflet-src.js:2765)
at NewClass._getMapPanePos (leaflet-src.js:4378)
at NewClass._rawPanBy (leaflet-src.js:4180)
at NewClass.invalidateSize (leaflet-src.js:3509)
at NewClass.<anonymous> (leaflet-src.js:4244)
рдкреВрд░реНрдг рдХреЙрд▓ рд╕реНрдЯреИрдХ _onResize
рд╣реИрдВрдбрд▓рд░ рд╕реЗ рдкреНрд░рд╛рд░рдВрдн рд╣реЛрддрд╛ рд╣реИред рдореИрдВ react-leaflet
рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣рд╛ рд╣реВрдВ рд▓реЗрдХрд┐рди рд╕реНрдЯреИрдХ рдЯреНрд░реЗрд╕ рдХрд╛ рдХреЛрдИ рднреА рд╣рд┐рд╕реНрд╕рд╛ рдЙрд╕ рдпрд╛ рд╕реНрдерд╛рдиреАрдп рдХреЛрдб рдХреЗ рдореБрджреНрджреЗ рдХреА рдУрд░ рдЗрд╢рд╛рд░рд╛ рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИред рдореИрдВрдиреЗ рдХреБрдЫ рдкреБрд░рд╛рдиреЗ рд╕рдВрд╕реНрдХрд░рдгреЛрдВ (рдЬреИрд╕реЗ 1.0.3
рдФрд░ 1.2.0
) рдХреА рдХреЛрд╢рд┐рд╢ рдХреА, рдпрд╣ рд╕реЛрдЪрдХрд░ рдХрд┐ рд╣рдо рдХрдо рд╕реЗ рдХрдо рдЗрд╕реЗ рдПрдХ рд╡рд┐рд╢рд┐рд╖реНрдЯ 1.x.x
рд╕рдВрд╕реНрдХрд░рдг рдореЗрдВ рд▓реЙрдХ рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реЛ рд╕рдХрддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдХреЛрдИ рднрд╛рдЧреНрдп рдирд╣реАрдВ рдерд╛ред
рдХреНрдпрд╛ рдЗрд╕ рдкрд░ рдХреЛрдИ рдЕрдкрдбреЗрдЯ рд╣реИ? рдореЗрд░реЗ рдЖрд╡реЗрджрди рдореЗрдВ рдкрддреНрд░рдХ рдХреЛ рдПрдХреАрдХреГрдд рдХрд░рдиреЗ рдореЗрдВ рдпрд╣рд╛рдБ рдПрдХ рд╣реА рд╕рдорд╕реНрдпрд╛ рд╣реИред рдирдХреНрд╢рд╛ рдирд╖реНрдЯ рд╣реЛрдиреЗ рдХреЗ рдмрд╛рдж, рдбреЛрдо рддрддреНрд╡ рдореЗрдВ рдЕрднреА рднреА рдПрдХ _leaflet_events рд╕рдВрдкрддреНрддрд┐ рд╣реИ, рд▓реЗрдХрд┐рди рдЗрд╕ рдСрдмреНрдЬреЗрдХреНрдЯ рд╕реЗ рдЫреБрдЯрдХрд╛рд░рд╛ рдкрд╛рдиреЗ рд╕реЗ рднреА рдХреЛрдИ рдорджрдж рдирд╣реАрдВ рдорд┐рд▓реАред
рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рд╣реИрдВрдбрд▓рд░ рдлрд╝рдВрдХреНрд╢рди рдХрд╛ рд╕рдВрджрд░реНрдн рдкреБрд░рд╛рдирд╛ рд╣реИ (рд╣реИрдВрдбрд▓рд░ рдореЗрдВ _mapPane рдирд┐рдЬреА рд╕рдВрдкрддреНрддрд┐ рдЧреИрд░-рдореМрдЬреВрдж рддрддреНрд╡ рдХреЛ рдЗрдВрдЧрд┐рдд рдХрд░рддреА рд╣реИ)ред
рдореИрдВ рднреА рдпрд╣ рдЕрдиреБрднрд╡ рдХрд░ рд░рд╣рд╛ рд╣реВрдВред рдпрд╣ рдореЗрд░реЗ рджреНрд╡рд╛рд░рд╛ рджреЗрдЦреЗ рдЬрд╛ рд░рд╣реЗ рдлреЗрдВрдХреЗ рдЧрдП рдЕрдкрд╡рд╛рджреЛрдВ рдореЗрдВ рд╕реЗ рдПрдХ рд╣реИ:
https://sentry.io/share/issue/b414c58ea85c44ee9e0e40ad0781883a/
рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рдЬреНрдпрд╛рджрд╛рддрд░ рддрдм рд╣реЛрддрд╛ рд╣реИ рдЬрдм рдХреЛрдИ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдорд╛рдирдЪрд┐рддреНрд░ рдЫреЛрдбрд╝рдиреЗ рдХреЗ рд▓рд┐рдП рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдмреИрдХ рдмрдЯрди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИред
рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдореБрдЭреЗ рд╕рдорд╛рдзрд╛рди рдорд┐рд▓ рдЧрдпрд╛ рд╣реЛрдЧрд╛:
рдорд╛рдирдЪрд┐рддреНрд░ рдХрдВрдЯреЗрдирд░ div рдореЗрдВ рдЕрднреА рднреА рдХреБрдЫ рдИрд╡реЗрдВрдЯ рд╣реИрдВ рдЬреЛ map.off
рдФрд░ map.remove
рдмрд╛рдж рднреА рд╕рдХреНрд░рд┐рдп рд╣реЛ рдЬрд╛рддреЗ рд╣реИрдВред
рдореЗрд░реЗ рдорд╛рдорд▓реЗ рдореЗрдВ рдорд╛рдирдЪрд┐рддреНрд░ рдореЗрдВ рдРрд╕реЗ рдЧреБрдг рд╣реИрдВ рдЬреЛ _leaflet_
рдФрд░ рдЙрди рдХрд╛рд░реНрдпреЛрдВ рдореЗрдВ рд╕реЗ рдХреБрдЫ рдЬреЛ рдореИрдВрдиреЗ рдорд╛рдирдЪрд┐рддреНрд░ рдкрд░ рд╣реА рд╕рдВрдкрддреНрддрд┐ "map._leaflet_events".
рдкрд╛рдП рд╣реИрдВ
рд╡реЗ pointerdown
, pointermove
рд░реВрдк рдореЗрдВ рд╕рдВрд▓рдЧреНрди рдкреНрд░рддреАрдд рд╣реЛрддреЗ рд╣реИрдВ рдФрд░ рдРрд╕реЗ рд▓реЗрдХрд┐рди рдЧреБрдгреЛрдВ рдХреЗ рдирд╛рдо map._leaflet_touchstarttouchstart32
рдЖрджрд┐ рдЬреИрд╕реЗ рд╣реИрдВред
рдореИрдВрдиреЗ рдкрд╛рдпрд╛ рдХрд┐ рдЕрдЧрд░ рдореИрдВ рдЙрдирдХреЛ рдкреБрдирд░рд╛рд╡реГрддреНрдд рдХрд░рддрд╛ рд╣реВрдВ рдФрд░ рдЙрдиреНрд╣реЗрдВ рдореИрдиреНрдпреБрдЕрд▓ рд░реВрдк рд╕реЗ рд╣рдЯрд╛ рджреЗрддрд╛ рд╣реВрдВ ( removeEventListener
рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдФрд░ рдлрд┐рд░ рд╕рдВрдкрддреНрддрд┐ рдХреЛ рдЕрдЪреНрдЫреЗ рдЙрдкрд╛рдп рдХреЗ рд▓рд┐рдП рд╣рдЯрд╛ рджреЗрддрд╛ рд╣реВрдВ), рддреЛ рдореИрдВ рджреВрд╕рд░реЗ рдорд╛рдирдЪрд┐рддреНрд░ рдХреЗ рд▓рд┐рдП div рдХрд╛ рдкреБрди: рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддрд╛ рд╣реВрдВред
рдЗрд╕рдиреЗ рдореЗрд░реЗ рджреНрд╡рд╛рд░рд╛ рджреЗрдЦреЗ рдЬрд╛ рд░рд╣реЗ рдореЗрдореЛрд░реА рд▓реАрдХ рдХреЛ рднреА рд╕рдорд╛рдкреНрдд рдХрд░ рджрд┐рдпрд╛ред
рдореИрдВ рдпрд╣рд╛рдВ рдХреЛрдб рдкреЛрд╕реНрдЯ рдирд╣реАрдВ рдХрд░ рд╕рдХрддрд╛, рд▓реЗрдХрд┐рди рдпрджрд┐ рдЖрдк POINTER_DOWN
рд▓рд┐рдП рдкрддреНрд░рдХ рд╕реНрд░реЛрдд рдЦреЛрдЬрддреЗ рд╣реИрдВ рддреЛ рдЖрдк рд╕рдВрд▓рдЧреНрди рд╣реЛрдиреЗ рд╡рд╛рд▓реА рдШрдЯрдирд╛рдУрдВ рдХреЛ рджреЗрдЦреЗрдВрдЧреЗ, рдФрд░ рдЙрдиреНрд╣реЗрдВ рдЕрд▓рдЧ рдХрд░рдиреЗ рдХрд╛ рддрд░реАрдХрд╛ рдЬрд╛рдиреЗрдВрдЧреЗред
рдореИрдВ рдЗрд╕реЗ рдХреНрд░реЛрдо рдкрд░ рдкреБрди: рдкреЗрд╢ рдХрд░ рд╕рдХрддрд╛ рд╣реВрдВ рд▓реЗрдХрд┐рди рдПрдлрдПрдл рдореЗрдВ рднреА (рджреЛрдиреЛрдВ рдЕрдкрдиреЗ рд╕реНрд╡рдпрдВ рдХреЗ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдкрд░ рдФрд░ @spydmobile рджреНрд╡рд╛рд░рд╛ рдкреНрд░рджрд╛рди рдХрд┐рдП рдЧрдП jsfiddle рдХреЗ рд╕рд╛рде)
@FLoibl рд╢рд╛рдпрдж рдЬрд┐рд╕ рддрдХрдиреАрдХ рдХрд╛ рдЖрдк рд╕рдлрд▓рддрд╛рдкреВрд░реНрд╡рдХ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣реЗ рд╣реИрдВ рдЙрд╕реЗ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд╣реАрдВ рдФрд░ рдкреЛрд╕реНрдЯ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдПрдХ
@spydmobile рдпрд╣рд╛рдБ рдЬрд╛рддрд╛ рд╣реИ, рдпрд╣реА рдореИрдВрдиреЗ рдереЛрдбрд╝рд╛ рд╕рдВрд╢реЛрдзрд┐рдд рд░реВрдк рдореЗрдВ рдХрд┐рдпрд╛ рд╣реИ:
рдореБрдЭреЗ рдирд╣реАрдВ рдкрддрд╛ рдХрд┐ рдЗрд╕ рдПрдл * рдЖрдИрдПрдирдЬреА рдЯрд┐рдкреНрдкрдгреА рдХреНрд╖реЗрддреНрд░ рдореЗрдВ рдХреЛрдб рдХреЛ рдареАрдХ рд╕реЗ рдХреИрд╕реЗ рдкреЛрд╕реНрдЯ рдХрд┐рдпрд╛ рдЬрд╛рдП, рдХреНрд╖рдорд╛ рдХрд░реЗрдВред
рдореИрдВрдиреЗ рдЕрдкрдиреА рдЯрд┐рдкреНрдкрдгреА рдХреЛ рдЕрдм рд▓рдЧрднрдЧ 10 рдмрд╛рд░ рд╕рдВрдкрд╛рджрд┐рдд рдХрд┐рдпрд╛ рд╣реИ lol
function removeMap()
{
var leafletCtrl = get_your_own_leaflet_reference_from_somewhere(),
dom = leafletCtrl.getReferenceToContainerDomSomehow();
//This removes most of the events
leafletCtrl.off();
//After this, the dom element should be good to reuse, unfortunatly it is not
leafletCtrl.remove();
var removeDanglingEvents = function(inputObj, checkPrefix)
{
if(inputObj !== null)
{
//Taken from the leaflet sourcecode directly, you can search for these constants and see how those events are attached, why they are never fully removed i don't know
var msPointer = L.Browser.msPointer,
POINTER_DOWN = msPointer ? 'MSPointerDown' : 'pointerdown',
POINTER_MOVE = msPointer ? 'MSPointerMove' : 'pointermove',
POINTER_UP = msPointer ? 'MSPointerUp' : 'pointerup',
POINTER_CANCEL = msPointer ? 'MSPointerCancel' : 'pointercancel';
for(var prop in inputObj)
{
var prefixOk = checkPrefix ? prop.indexOf('_leaflet_') !== -1 : true, propVal; //if we are in the _leaflet_events state kill everything, else only stuff that contains the string '_leaflet_'
if(inputObj.hasOwnProperty(prop) && prefixOk)
{
//Map the names of the props to the events that were really attached => touchstart equals POINTER_DOWN etc
var evt = [];
if(prop.indexOf('touchstart') !== -1) //indexOf because the prop names are really weird 'touchstarttouchstart36' etc
{
evt = [POINTER_DOWN];
}
else if(prop.indexOf('touchmove') !== -1)
{
evt = [POINTER_MOVE];
}
else if(prop.indexOf('touchend') !== -1)
{
evt = [POINTER_UP, POINTER_CANCEL];
}
propVal = inputObj[prop];
if(evt.length > 0 && typeof propVal === 'function')
{
evt.each(function(domEvent)
{
dom.removeEventListener(domEvent, propVal, false);
});
}
//Reference B-GONE, Garbage b collected.
inputObj[prop] = null;
delete inputObj[prop];
}
}
}
};
removeDanglingEvents(dom._leaflet_events, false);
removeDanglingEvents(dom, true);
}
@FLoibl рджреЗрдЦреЗрдВ https://help.github.com/articles/basic-writing-and-formatting-syntax/#quoting -code
рдЖрд╣ рдЯреНрд░рд┐рдкрд▓ рдмреИрдХрдЯрд┐рдХреНрд╕, рд╕рдордЭ рдЧрдпрд╛, tyред
@FLoibl рдпрд╣ рдПрдХ рдмрд╣реБрдд рдЕрдЪреНрдЫреА рдЬрд╛рдВрдЪ рд╣реИ: +1:
рдХреНрдпрд╛ рдЖрдк рдХреГрдкрдпрд╛ рдХреБрдЫ рд▓реЙрдЧрд┐рдВрдЧ рдЬреЛрдбрд╝ рд╕рдХрддреЗ рд╣реИрдВ ...? https://github.com/Leaflet/Leaflet/blob/5161140e952969c5da27751b79154a2c93f53bfa/src/dom/DomEvent.Pointer.js#L39 рдФрд░ https://github.com/Leaflet/Leaflet/blob/fe9e0f233388e8c02b9e7f рдЬреЗрдПрд╕#рдПрд▓133
рдЙрдиреНрд╣реЗрдВ рд╣рд░ рдШрдЯрдирд╛ рдХреЗ рд▓рд┐рдП рдЪрд▓рдирд╛ L.Map
рдирд╖реНрдЯ рд╣реЛ рдЬрд╛рддрд╛ рд╣реИ, рдФрд░ рд╡рд╣реА рдХрд╛рдо рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП рдЬреЛ рдЖрдк рдХрд░ рд░рд╣реЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдореБрдЭреЗ рдЖрд╢реНрдЪрд░реНрдп рд╣реИ рдХрд┐ рдпрд╣ рдЕрдкреЗрдХреНрд╖рд╛ рдХреЗ рдЕрдиреБрд░реВрдк рдХрд╛рдо рдХреНрдпреЛрдВ рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИред
рд╣рд╛рдБ, рдореИрдВ рдЙрд╕ рд╕рдорд╛рд░реЛрд╣ рдХреЛ рдЬрд╛рдирддрд╛ рд╣реВрдВ рдФрд░ рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЗрд╕реЗ рдмреБрд▓рд╛рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рд╕рднреА рдШрдЯрдирд╛рдУрдВ рдХреЗ рд▓рд┐рдП рдирд╣реАрдВред
рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рд╕рдорд╕реНрдпрд╛ рдпрд╣ рд╣реИ рдХрд┐ рдХреЛрдб рдЙрдиреНрд╣реЗрдВ рдбреЛрдо рдореЗрдВ "рдкреЙрдЗрдВрдЯрд░рдореЛрд╡" рдЖрджрд┐ рдХреЗ рд░реВрдк рдореЗрдВ рдЬреЛрдбрд╝рддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рд╕рдВрдкрддреНрддрд┐ рдХреЗ рдирд╛рдо "рдЯрдЪрд╕реНрдЯрд╛рд░реНрдЯ" рдЖрджрд┐ рд╣реИрдВред рд╕рд╛рде рд╣реА "рдЯрдЪрд╕реНрдЯрд╛рд░реНрдЯ" рд╢рдмреНрдж рд╕рдВрдкрддреНрддрд┐ рдХреЗ рдирд╛рдо рдореЗрдВ рджреЛ рдмрд╛рд░ рджреЗрдЦрд╛ рдЬрд╛рддрд╛ рд╣реИ, рд╢рд╛рдпрдж рдПрдХ рдЕрдкреНрд░рддреНрдпрд╛рд╢рд┐рдд рдбрдм рдХреЙрдиреНрд╕реИрдЯ рдЖрдИрдбреА рдФрд░ рдШрдЯрдирд╛ рдХрд╛ рдирд╛рдо?
рдХреНрдпрд╛ рдЙрди "рд╕реВрдЪрдХ" рдШрдЯрдирд╛рдУрдВ рдХреЛ рднреА рд╡рд┐рдВрдбреЛрдЬ 10 рдкрд░ рдмрд┐рдирд╛ рдЯрдЪрд╕реНрдХреНрд░реАрди рдФрд░ рдХреНрд░реЛрдо рдореЗрдВ рд╕рдВрд▓рдЧреНрди рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП?
рджреБрд░реНрднрд╛рдЧреНрдп рд╕реЗ, рдореБрдЭреЗ рд╡рд╛рд╕реНрддрд╡рд┐рдХ рд╕реБрдзрд╛рд░ рдкреНрд░рджрд╛рди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдкрддреНрд░рдХ рдХреЗ рдЖрдВрддрд░рд┐рдХ рдХрд╛рдордХрд╛рдЬ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдкрд░реНрдпрд╛рдкреНрдд рдЬрд╛рдирдХрд╛рд░реА рдирд╣реАрдВ рд╣реИ :-(
рдореИрдВ рдЙрд╕ рд╕рдорд╛рд░реЛрд╣ рдХреЛ рдЬрд╛рдирддрд╛ рд╣реВрдВ рдФрд░ рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЗрд╕реЗ рдмреБрд▓рд╛рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рд╕рднреА рдШрдЯрдирд╛рдУрдВ рдХреЗ рд▓рд┐рдП рдирд╣реАрдВред
рдЕрдм рд╕рд╡рд╛рд▓ рдпрд╣ рд╣реИ рдХрд┐ рдРрд╕реА рдХреМрди рд╕реА рдШрдЯрдирд╛рдПрдБ рд╣реИрдВ рдЬрд┐рдирдХреЗ рд▓рд┐рдП removePointerListener
рдирд╣реАрдВ рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИ? рд╣реЛ рд╕рдХрддрд╛ рд╣реИ рдХрд┐ рд╣рдо рдпрд╣рд╛рдВ рдпрд╛ рд╡рд╣рд╛рдВ рдХреЛрдИ рдлрд╝рдВрдХреНрд╢рди рдХреЙрд▓ рдпрд╛рдж рдХрд░ рд░рд╣реЗ рд╣реЛрдВред
рдХреНрдпрд╛ рдЙрди "рд╕реВрдЪрдХ" рдШрдЯрдирд╛рдУрдВ рдХреЛ рднреА рд╡рд┐рдВрдбреЛрдЬ 10 рдкрд░ рдмрд┐рдирд╛ рдЯрдЪрд╕реНрдХреНрд░реАрди рдФрд░ рдХреНрд░реЛрдо рдореЗрдВ рд╕рдВрд▓рдЧреНрди рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП?
рд╣рд╛рдВред рдпрд╣ рдкрддрд╛ рд▓рдЧрд╛рдирд╛ рд▓рдЧрднрдЧ рдЕрд╕рдВрднрд╡ рд╣реИ рдХрд┐ рдХрд┐рд╕реА рд╕рд┐рд╕реНрдЯрдо рдореЗрдВ рдЯрдЪрд╕реНрдХреНрд░реАрди рд╣реИ рдпрд╛ рдирд╣реАрдВ, рдЗрд╕рд▓рд┐рдП рдпрджрд┐ рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдкреЙрдЗрдВрдЯрд░ рдИрд╡реЗрдВрдЯ рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рддрд╛ рд╣реИ, рддреЛ рдзрд╛рд░рдгрд╛ рдпрд╣ рд╣реИ рдХрд┐ рдЙрдирдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред
рдореБрдЭреЗ рд╡рд╛рд╕реНрддрд╡рд┐рдХ рд╕реБрдзрд╛рд░ рдкреНрд░рджрд╛рди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдкрддреНрд░рдХ рдХреЗ рдЖрдВрддрд░рд┐рдХ рдХрд╛рдордХрд╛рдЬ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдкрд░реНрдпрд╛рдкреНрдд рдЬрд╛рдирдХрд╛рд░реА рдирд╣реАрдВ рд╣реИ :-(
рдЕрд░реЗ, рдирд┐рд░рд╛рд╢ рдордд рд╣реЛ, рдпрд╣ рдмрд╣реБрдд рдЕрдЪреНрдЫрд╛ рдЬрд╛рдВрдЪ рдХрд╛рд░реНрдп рд╣реИ! :рдореБрд╕реНрдХреБрд░рд╛рдУ:
рдпрд╣ рдмрдЧ рд╕рдВрд╕реНрдХрд░рдг 1.0.3 рдореЗрдВ рдореМрдЬреВрдж рдирд╣реАрдВ рд╣реИред рдореИрдВрдиреЗ @spydmobile jsfiddle рдХреЛ рдЙрдард╛рдпрд╛ рдФрд░ рд▓реАрдлрд▓реЗрдЯ рд╕рдВрд╕реНрдХрд░рдг рдХреЛ рдмрджрд▓ рджрд┐рдпрд╛ рдФрд░ рддреНрд░реБрдЯрд┐ рджреВрд░ рд╣реЛ рдЧрдИ http://jsfiddle.net/5hmadjnk/47/ ред рд╕рдВрд╕реНрдХрд░рдг 1.1.0 рдХреЗ рд╕рд╛рде рдпрд╣ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рд╣реИред
@ benru89 рдпрд╣ рдмрдЧ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ 1.0.3 рдореЗрдВ https://github.com/Leaflet/Leaflet/issues/5263 рдХреЗ рд░реВрдк рдореЗрдВ рдореМрдЬреВрдж рдерд╛ (рдЬреНрдпрд╛рджрд╛рддрд░ https://github.com/Leaflet/Leaflet/pull/ рджреНрд╡рд╛рд░рд╛ рддрдп рдХрд┐рдпрд╛ рдЧрдпрд╛) 5265)ред
1.0.3 рд╕реЗ 1.1.0 рдореЗрдВ рдкрд░рд┐рд╡рд░реНрддрди рдиреЗ рдЕрдм рдмрд╣рд┐рд╖реНрдХреГрдд L.Mixin.Events
рдФрд░ рд░реЛрд▓рдЕрдкрдЬреЗрдПрд╕ рдмрд┐рд▓реНрдб рдХреЛ рднреА рдкреНрд░рднрд╛рд╡рд┐рдд рдХрд┐рдпрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдореБрдЭреЗ рдирд╣реАрдВ рд▓рдЧрддрд╛ рдХрд┐ рдЗрд╕реЗ рдЕрдЪреНрдЫреА рддрд░рд╣ рд╕реЗ рдЯреНрд░реИрдХ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рдпрд╣рд╛рдВ рддрдХ тАЛтАЛрдХрд┐ git bisect
рд╕рд╛рде рднреА рдирд╣реАрдВред
@IvanSanchez I рдиреЗ 1.0.3 рдФрд░ 1.1.0 рдореЗрдВ рд╣рдЯрд╛рдП рдЧрдП рдлрд╝рдВрдХреНрд╢рди рдХреА рддреБрд▓рдирд╛ рдХреА рдФрд░ рдЗрд╕реЗ рдЬреЛрдбрд╝рд╛ рдЧрдпрд╛:
for (i in this._panes) {
remove(this._panes[i]);
}
this._layers = [];
this._panes = [];
delete this._mapPane;
delete this._renderer;
рдЕрдЧрд░ рдореИрдВ 6 рд╡реАрдВ рдкрдВрдХреНрддрд┐ рдХреЛ рд╣рдЯрд╛ рджреЗрддрд╛ рд╣реВрдВ, рддреЛ рд╡рд╣ рдЬреЛ рдореИрдкрдкреЗрди рдХреЛ рд╣рдЯрд╛ рджреЗрддрд╛ рд╣реИ, рддреНрд░реБрдЯрд┐ рджреВрд░ рд╣реЛ рдЬрд╛рддреА рд╣реИред рд╣рд╛рд▓рд╛рдВрдХрд┐ рдореБрдЭреЗ рдирд╣реАрдВ рдкрддрд╛ рдХрд┐ рдЗрд╕реЗ рд╣рдЯрд╛рдиреЗ рдХрд╛ рдкреНрд░рднрд╛рд╡ рд╣реИ, рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдореИрдкрдкреЗрди рдХреЛ рд╣рдЯрд╛рдирд╛ рд╣реЛрдЧрд╛ рд▓реЗрдХрд┐рди рдпрд╣ рдмрдЧ рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ рдкреЗрд╢ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ рдЬрдм рдЙрд╕ рд▓рд╛рдЗрди рдХреЛ рдЬреЛрдбрд╝рд╛ рдЧрдпрд╛ рдерд╛ред
@ benru89 рд╡рд╛рд╣, рдпрд╣ рднреА рдЕрдЪреНрдЫреА рдЬрд╛рдирдХрд╛рд░реА рд╣реИ: +1:
рдореИрдВ рдЕрднреА рдирд╣реАрдВ рджреЗрдЦрддрд╛ рдХрд┐ рдорд╛рдирдЪрд┐рддреНрд░ рдкреИрди рдореЗрдВ рдЕрднреА рдХреМрди рд╕реЗ рдкреЙрдЗрдВрдЯрд░ рдЗрд╡реЗрдВрдЯ рд╣реИрдВрдбрд▓рд░ рд╣реИрдВ, рд╣рд╛рд▓рд╛рдВрдХрд┐: рд╕реЛрдЪ:
рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдорд╛рдирдЪрд┐рддреНрд░ рдлрд▓рдХ рдХреЛ рдирд╣реАрдВ рд╣рдЯрд╛рдХрд░, рдЖрдк рдХреЗрд╡рд▓ рд╕рдорд╕реНрдпрд╛ рдХреЛ рдореБрдЦреМрдЯрд╛ рдХрд░рддреЗ рд╣реИрдВред рдЬрдм рдореИрдВрдиреЗ рдХреЙрд▓ рд╕реНрдЯреИрдХ рдХреЛ рдЯреНрд░реИрдХ рдХрд┐рдпрд╛, рддреЛ рд╕рдорд╕реНрдпрд╛ рдпрд╣ рдереА рдХрд┐ рдХреБрдЫ _mapPane рдСрдмреНрдЬреЗрдХреНрдЯ рдПрдХ рдирд╖реНрдЯ рдХрд┐рдП рдЧрдП рдбреЛрдо рддрддреНрд╡ рдХреА рдУрд░ рдЗрд╢рд╛рд░рд╛ рдХрд░ рд░рд╣реЗ рдереЗ рдФрд░ рдЗрд╕ рдкреНрд░рдХрд╛рд░ рдЕрдкрд░рд┐рднрд╛рд╖рд┐рдд рд╕реЗ рдХреИрд╢реНрдб рд╕реНрдерд┐рддрд┐ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░ рд░рд╣реЗ рдереЗред рдпрджрд┐ рдлрд▓рдХ рдирд╖реНрдЯ рдирд╣реАрдВ рд╣реЛрддрд╛ рд╣реИ, рддреЛ рднреВрдд рдХреА рдШрдЯрдирд╛рдПрдВ рдЕрдкрд╡рд╛рдж рдХреЛ рдЯреНрд░рд┐рдЧрд░ рдХрд┐рдП рдмрд┐рдирд╛ рд╣реЛ рд╕рдХрддреА рд╣реИрдВред
@Floibl рдореИрдВ
рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЗрд╡реЗрдВрдЯ рд╣реИрдВрдбрд▓рд░ рдЗрд╕рдХрд╛ рдХрд╛рд░рдг рдмрдирддрд╛ рд╣реИ (рдХрдо рд╕реЗ рдХрдо рдореЗрд░реЗ рдорд╛рдорд▓реЗ рдореЗрдВ рдФрд░ @spydmobile ) рдХреЛ "рдЯрдЪрдПрдХреНрд╕рдЯреЗрдВрдб" рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдпрд╣ рдПрдХ рдкрддреНрд░рдХ рд╣реИред рдбреНрд░рд╛ рд╣реИрдВрдбрд▓рд░ред рдореБрдЭреЗ рдкрддрд╛ рдЪрд▓рд╛ рдХрд┐ рд▓реАрдлрд▓реЗрдЯ.рдбреНрд░рд╛ рдХреЗ рд▓рд┐рдП рдЖрдпрд╛рдд рдХреЛ рд╣рдЯрд╛рдиреЗ рд╕реЗ рдЕрдкрд╡рд╛рдж рднреА рдмрдВрдж рд╣реЛ рдЬрд╛рддреЗ рд╣реИрдВред
рдореБрдЭреЗ рдПрдХ рдФрд░ рдЙрдкрд╛рдп рдорд┐рд▓рд╛ред рдЧреИрд░-рджрд╕реНрддрд╛рд╡реЗрдЬ рд╡рд┐рдХрд▓реНрдк touchExtend : false
рд╕рд╛рде рдЕрдкрдиреЗ рдорд╛рдирдЪрд┐рддреНрд░ рдХреЛ рдкреНрд░рд╛рд░рдВрдн рдХрд░рдирд╛ рд╕рдорд╕реНрдпрд╛рдЧреНрд░рд╕реНрдд рд╣реИрдВрдбрд▓рд░ рдХреЛ рдирд┐рд╖реНрдХреНрд░рд┐рдп рдХрд░ рджреЗрддрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдХреЛрдИ рдФрд░ рдЕрдкрд╡рд╛рдж рдирд╣реАрдВ рд╣реИред рдореИрдВ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдирд╣реАрдВ рдЬрд╛рдирддрд╛ рдХрд┐ рдРрд╕рд╛ рдХрд░рдиреЗ рд╕реЗ рдореИрдВ рдХрд┐рди рд╡рд┐рд╢реЗрд╖рддрд╛рдУрдВ рдХреЛ рдЦреЛ рд░рд╣рд╛ рд╣реВрдВ, рд▓реЗрдХрд┐рди рдХреЛрдб рдХреЛ рджреЗрдЦрддреЗ рд╣реБрдП рдпрд╣ рдореЛрдмрд╛рдЗрд▓ рдпрд╛ рдЯрдЪ рд╕реНрдХреНрд░реАрди рдХреЗ рд▓рд┐рдП рдХреБрдЫ рд╡рд┐рд╕реНрддрд╛рд░рд┐рдд рдЗрд╢рд╛рд░реЗ рд╣реЛ рд╕рдХрддреЗ рд╣реИрдВ ?? рдХрд┐рд╕реА рднреА рдорд╛рдорд▓реЗ рдореЗрдВ рдореЗрд░реЗ рдРрдк рдореЗрдВ рд╕рдмрдХреБрдЫ рдареАрдХ рдХрд╛рдо рдХрд░рддрд╛ рдкреНрд░рддреАрдд рд╣реЛрддрд╛ рд╣реИред
@IvanSanchez рдореБрдЭреЗ рдпрдХреАрди рдирд╣реАрдВ рд╣реИ рдХрд┐ рдпрд╣ рд╡рд╣реА рдореБрджреНрджрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рд╕рдВрдмрдВрдзрд┐рдд рд╣реЛ рд╕рдХрддрд╛ рд╣реИред
рдЬрдм рдЖрдк рдЬрд╝реВрдо рдРрдирд┐рдореЗрд╢рди рдкреНрд░рдЧрддрд┐ рдкрд░ рд╣реЛрдиреЗ рдкрд░ рдорд╛рдирдЪрд┐рддреНрд░ рдХреЛ рдирд╖реНрдЯ рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рдЖрдкрдХреЛ рд╡рд╣реА рддреНрд░реБрдЯрд┐ рдорд┐рд▓рддреА рд╣реИ: Uncaught TypeError: Cannot read property '_leaflet_pos' of undefined
ред
рдореИрдВрдиреЗ рдХреЛрдб рдХреЗ рдЕрдВрджрд░ рджреЗрдЦрдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХреА рдФрд░ рдкрд╛рдпрд╛ рдХрд┐ Map._animateZoom()
рдЕрдВрджрд░ рдПрдХ рд▓рд╛рдЗрди рд╣реИ: setTimeout(Util.bind(this._onZoomTransitionEnd, this), 250);
рдЕрдЧрд░ рдореИрдВ рдЗрд╕реЗ рдкрд░реНрдпрд╛рдкреНрдд рд░реВрдк рд╕реЗ рд╕рдордЭрддрд╛ рд╣реВрдВ, рддреЛ рдирдХреНрд╢рд╛ рд╣рдЯрд╛ рджрд┐рдП рдЬрд╛рдиреЗ рдкрд░ рдпрд╣ рдЯрд╛рдЗрдордЖрдЙрдЯ рдирд╖реНрдЯ рдирд╣реАрдВ рд╣реЛрддрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдлрд╝рдВрдХреНрд╢рди Map._onZoomTransitionEnd
рдХреЛ рд╣рдореЗрд╢рд╛ рдХреЙрд▓ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдпрд╣ рдЖрдкрдХрд╛ _"рдпрд╣рд╛рдВ рдпрд╛ рд╡рд╣рд╛рдВ рдХреЛрдИ рдлрд╝рдВрдХреНрд╢рди рдХреЙрд▓ рдЧреБрдо"_ рд╣реЛ рд╕рдХрддрд╛ рд╣реИред
рдФрд░ рд╕рд░рд▓реАрдХреГрдд рдХреЙрд▓ рдЯреНрд░реА this._onZoomTransitionEnd
-> this._move
-> this._getNewPixelOrigin
-> this._getMapPanePos
-> getPosition(this._mapPane)
-> return el._leaflet_pos
рд╡рд┐рдлрд▓ рд░рд╣рддрд╛ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ this._mapPane
_undefined_ рд╣реИред
рд╣реЛ рд╕рдХрддрд╛ рд╣реИ рдХрд┐ рдЗрд╕ рдорд╛рдорд▓реЗ рдХреЛ рдареАрдХ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХреЗ, рдпрджрд┐ рдЖрдк this._move
рдФрд░ this._moveEnd
рдХреЙрд▓ рдХреЛ if (this._mapPane) {}
рд╕реНрдерд┐рддрд┐ рдореЗрдВ рд▓рдкреЗрдЯрддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдореИрдВрдиреЗ рдкрд░реАрдХреНрд╖рдг рдирд╣реАрдВ рдХрд┐рдпрд╛ рдХрд┐ рдЗрд╕рдХреЗ рдХреБрдЫ рдЕрдиреНрдп рдкрд░рд┐рдгрд╛рдо рд╣реИрдВ рдпрд╛ рдирд╣реАрдВред
рдЗрд╕реЗ рдмрджрд▓реЗрдВ:
_onZoomTransitionEnd: function () {
if (!this._animatingZoom) { return; }
if (this._mapPane) {
removeClass(this._mapPane, 'leaflet-zoom-anim');
}
this._animatingZoom = false;
this._move(this._animateToCenter, this._animateToZoom);
// This anim frame should prevent an obscure iOS webkit tile loading race condition.
requestAnimFrame(function () {
this._moveEnd(true);
}, this);
}
рдЗрд╕рдХреЗ рд╕рд╛рде рд╣реА:
_onZoomTransitionEnd: function () {
if (!this._animatingZoom) { return; }
this._animatingZoom = false;
if (this._mapPane) {
removeClass(this._mapPane, 'leaflet-zoom-anim');
this._move(this._animateToCenter, this._animateToZoom);
// This anim frame should prevent an obscure iOS webkit tile loading race condition.
requestAnimFrame(function () {
this._moveEnd(true);
}, this);
}
}
рдЗрд╕ рдкрд░ рдХреЛрдИ рдЕрдкрдбреЗрдЯ? рдореИрдВ рдПрдХ рд╣реА рд╕рдорд╕реНрдпрд╛ рдХрд╛ рд╕рд╛рдордирд╛ рдХрд░ рд░рд╣рд╛ рд╣реВрдБред touchExtend : false
рдорджрдж рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИред рд╕рдорд╕реНрдпрд╛ рддрдм рд╣реЛрддреА рд╣реИ рдЬрдм рдореИрдВ рджреГрд╢реНрдп рд╕реЗ рджреВрд░ рдиреЗрд╡рд┐рдЧреЗрдЯ рдХрд░рддрд╛ рд╣реВрдВ, рдЬрд╣рд╛рдВ рдореЗрд░реЗ рдкрд╛рд╕ рдирдХреНрд╢рд╛ рд╣реИ (рдЗрд╕реЗ рдЗрд╕ рдмрд┐рдВрджреБ рдкрд░ map.remove() рдкрд░ рдХреЙрд▓ рдХрд░рдХреЗ рдирд╖реНрдЯ рдХрд┐рдпрд╛ рдЬрд╛ рд░рд╣рд╛ рд╣реИ) рдФрд░ рдлрд┐рд░ рдореИрдВ рдЗрд╕ рджреГрд╢реНрдп рдкрд░ рд╡рд╛рдкрд╕ рдиреЗрд╡рд┐рдЧреЗрдЯ рдХрд░рддрд╛ рд╣реВрдВред рдЗрд╕реЗ рдирдпрд╛ рдирдХреНрд╢рд╛ рдмрдирд╛рдирд╛ рдФрд░ рдЖрд░рдВрдн рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП, рд▓реЗрдХрд┐рди рдореБрдЭреЗ setMaxBounds
рд╡рд┐рдзрд┐ рдореЗрдВ getPosition
рдкрд░ '_leaflet_pos' рддреНрд░реБрдЯрд┐ рдорд┐рд▓ рд░рд╣реА рд╣реИ:
Uncaught (in promise) TypeError: Cannot read property '_leaflet_pos' of undefined
at getPosition (webpack-internal:///./node_modules/leaflet/dist/leaflet-src.js:2445)
at NewClass._getMapPanePos (webpack-internal:///./node_modules/leaflet/dist/leaflet-src.js:4409)
at NewClass._moved (webpack-internal:///./node_modules/leaflet/dist/leaflet-src.js:4413)
at NewClass.getCenter (webpack-internal:///./node_modules/leaflet/dist/leaflet-src.js:3774)
at NewClass.panInsideBounds (webpack-internal:///./node_modules/leaflet/dist/leaflet-src.js:3488)
at NewClass._panInsideMaxBounds (webpack-internal:///./node_modules/leaflet/dist/leaflet-src.js:4220)
at NewClass.setMaxBounds (webpack-internal:///./node_modules/leaflet/dist/leaflet-src.js:3444)
рдФрд░ setView
рд╡рд┐рдзрд┐ рдореЗрдВ рднреА:
Uncaught (in promise) TypeError: Cannot read property '_leaflet_pos' of undefined
at getPosition (leaflet-src.js?9eb7:2445)
at NewClass._getMapPanePos (leaflet-src.js?9eb7:4409)
at NewClass.containerPointToLayerPoint (leaflet-src.js?9eb7:3989)
at NewClass._getCenterLayerPoint (leaflet-src.js?9eb7:4446)
at NewClass._getCenterOffset (leaflet-src.js?9eb7:4451)
at NewClass._tryAnimatedPan (leaflet-src.js?9eb7:4526)
at NewClass.setView (leaflet-src.js?9eb7:3181)
Map.remove () рдХреЗ рдмрд╛рдж рдПрдХ рд╣реА рд╕рдорд╕реНрдпрд╛, рдореЗрд░реЗ рдирдХреНрд╢реЗ рдХреЛ рдлрд┐рд░ рд╕реЗ рд╕реНрдерд╛рдкрд┐рдд рдХрд░реЗрдВ рдФрд░ рдпрд╣ рд╕рдЯреАрдХ рддреНрд░реБрдЯрд┐ рдкреНрд░рд╛рдкреНрдд рдХрд░реЗрдВ
v1.6.0 рдХреЗ рд╕рд╛рде рдПрдХ рд╣реА рд╕рдорд╕реНрдпрд╛ред рдпрд╣ рдПрдХ рдЬрдЯрд┐рд▓ рдореБрджреНрджрд╛ рд╣реИ
рдпрд╣рд╛рдВ рдПрдХ рдПрд╕рдПрд╕рд╕реАрд╕реАрдИ рд╣реИ: https://jsfiddle.net/0oafw694/1/
рдореВрд▓ рд░реВрдк рд╕реЗ, рдирд┐рдореНрди рдХреЛрдб рдЪрд▓рд╛ рд░рд╣рд╛ рд╣реИ ...
map = L.map('map');
map.setView(...);
map.setMaxBounds(...);
map.remove();
... рджреЛ рдИрд╡реЗрдВрдЯ рд╢реНрд░реЛрддрд╛рдУрдВ рдХреЛ рд╕рдВрд▓рдЧреНрди рдЫреЛрдбрд╝ рджреЗрддрд╛ рд╣реИ:
moveend: (1) [тАж]
0: Object { fn: _panInsideMaxBounds(), ctx: undefined } // from setMaxBounds
unload: (2) [тАж]
0: Object { fn: _destroy() , ctx: {тАж} }
1: Object { fn: _destroyAnimProxy(), ctx: undefined }
zoomanim: (1) [тАж]
0: Object { fn: _createAnimProxy(), ctx: undefined }
рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ, zoomanim/_createAnimProxy
рдорд╛рдзреНрдпрдо рд╕реЗ рд╕рдВрднрд╛рд▓рд╛ рдЬрд╛рддрд╛ рд╣реИ unload/_destroyAnimProxy
, рдФрд░ рдЗрд╕ рдкреНрд░рдХрд╛рд░ рдХреЛрдИ рд╕рдорд╕реНрдпрд╛ рдирд╣реАрдВ рд╣реИред рд▓реЗрдХрд┐рди moveend/_panInsideMaxBounds
рдХреЛ рдЕрдкрдВрдЬреАрдХреГрдд рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рдореИрдВ рдПрдХ рдкреАрдЖрд░ рддреИрдпрд╛рд░ рдХрд░реВрдВрдЧрд╛ тАж
рдореИрдВрдиреЗ рдЕрднреА рдЙрд╕ рдорд╛рдирдЪрд┐рддреНрд░ рдХреЗ рд▓рд┐рдП рдПрдХ div рдмрдирд╛рдирд╛ рд╕рдорд╛рдкреНрдд рдХрд░ рджрд┐рдпрд╛ рд╣реИ рдЬрд┐рд╕рдореЗрдВ рдЧрддрд┐рд╢реАрд▓ рдЖрдИрдбреА рд╣реИ, рдЗрд╕рд▓рд┐рдП рдЬрдм рдореБрдЭреЗ div рдХрд╛ рдкреБрди: рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рд╣реЛрддрд╛ рд╣реИ, рддреЛ рдореИрдВ рд╕реНрдореГрддрд┐ рдХреЛ рд░рд┐рд▓реАрдЬрд╝ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдореМрдЬреВрджрд╛ рдорд╛рдирдЪрд┐рддреНрд░ рдХреЛ рд╣рдЯрд╛ рджреЗрддрд╛ рд╣реВрдВ (рдпрд╣рд╛рдВ рддрдХ тАЛтАЛтАЛтАЛрдХрд┐ рдХреБрдЫ рдШрдЯрдирд╛рдПрдВ рдЕрднреА рднреА рдЪрд▓ рд░рд╣реА рд╣реИрдВ) рдФрд░ рдлрд┐рд░ рдПрдХ рдЕрд▓рдЧ рдЖрдИрдбреА рдХреЗ рд╕рд╛рде div рдХреЛ рдлрд┐рд░ рд╕реЗ рдмрдирд╛рдПрдВ рддрд╛рдХрд┐ рдореИрдВ рдЗрд╕рдореЗрдВ рдПрдХ рдирдпрд╛ рдирдХреНрд╢рд╛ рдмрдирд╛ рд╕рдХреВрдВред
рдореИрдВ рдЕрдкрдиреЗ рд╕рднреА рдорд╛рдирдЪрд┐рддреНрд░реЛрдВ рдХреЛ рдХрд┐рд╕реА рдСрдмреНрдЬреЗрдХреНрдЯ рдореЗрдВ рднреА рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд░рддрд╛ рд╣реВрдВ, рдЗрд╕рд▓рд┐рдП рдореИрдВ рдЙрдиреНрд╣реЗрдВ рдЕрдкрдиреА рдЖрдИрдбреА рдХреЗ рдЕрдиреБрд╕рд╛рд░ рд╣реЗрд░рдлреЗрд░ рдХрд░ рд╕рдХрддрд╛ рд╣реВрдВ (рдореЗрд░реЗ рдкрд╛рд╕ рдПрдХ рд╕реЗ рдЕрдзрд┐рдХ рдорд╛рдирдЪрд┐рддреНрд░ рджрд┐рдЦрд╛рдИ рджреЗ рд░рд╣реЗ рд╣реИрдВ, рд╕рднреА рдЧрддрд┐рд╢реАрд▓ рдЖрдИрдбреА рдХреЗ рд╕рд╛рде)
рдкрддреНрд░рдХ рдХреЗ рд╕рд╛рде рдореЗрд░реЗ рдкреНрд░рдпреЛрдЧреЛрдВ рдХреЗ рдЕрдиреБрд╕рд╛рд░, рдЬреЛ рднреА рдШрдЯрдирд╛рдПрдБ (рдЙрджрд╛ред рдореВрд╡реЗрдВрдб, рдореВрд╡рд╕реНрдЯрд╛рд░реНрдЯ, рдЖрджрд┐) рдЬреЛ рдбреЗрд╡рд▓рдкрд░реНрд╕ рджреНрд╡рд╛рд░рд╛ рд╣реЗрд░рдлреЗрд░ рдХреА рдЬрд╛рддреА рд╣реИрдВ, рдЙрдирдХреЗ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд╡реНрдпрд╡рд╣рд╛рд░ рдХреЛ рдмрджрд▓ рджреЗрддреА рд╣реИрдВ рдФрд░ рдбреЛрдо рд╕реЗ рд▓реАрдлрд▓реЗрдЯ рдХреЛ рдЙрддрд╛рд░рддреЗ рд╕рдордп рд╕реНрдореГрддрд┐ рдореЗрдВ рд░рд╣рддреА рд╣реИрдВред
рдореИрдВрдиреЗ рдпрд╣ рдХрд┐рдпрд╛ рдерд╛: @moveend="()=>{enableRecenter = true}"
рдФрд░ рдЗрд╕рд▓рд┐рдП, рдорд╛рдирдЪрд┐рддреНрд░ рдХреЛ рдЙрддрд╛рд░рдиреЗ/рдирд┐рдХрд╛рд▓рдиреЗ рдХреЗ рджреМрд░рд╛рди 'рдореВрд╡реЗрдВрдб' рдХрд╛ рд╣реИрдВрдбрд▓рд░ рд╕реНрдореГрддрд┐ рдореЗрдВ рдмрдирд╛ рд░рд╣рд╛ред
рдореИрдВрдиреЗ рдЗрди рд╡рд┐рдзрд┐рдпреЛрдВ рдХреЗ рдЬреЛрдбрд╝рддреЛрдбрд╝ (рдореЗрд░реЗ рдЕрдкрдиреЗ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди) рдХреЛ рдорд╛рдирдЪрд┐рддреНрд░ рдШрдЯрдХ рд╕реЗ рд╣реА рд╣рдЯрд╛ рджрд┐рдпрд╛ рдФрд░ рдЕрдм рдпрд╣ рддреНрд░реБрдЯрд┐ рджрд┐рдЦрдирд╛ рдмрдВрдж рд╣реЛ рдЧрдИред
рддреЛ рдореВрд▓ рд░реВрдк рд╕реЗ, рдорд╛рдирдЪрд┐рддреНрд░ рд╡рд┐рдзрд┐рдпреЛрдВ рдХреЛ рдХрднреА рднреА рд╕реНрдкрд░реНрд╢ рди рдХрд░реЗрдВ !!! рдмреЗрд╢рдХ, рдЬрдм рддрдХ рдХрд┐ рдкреБрд╕реНрддрдХрд╛рд▓рдп рдЗрд╕ рд╡реНрдпрд╡рд╣рд╛рд░ рдХрд╛ рдкрддрд╛ рдирд╣реАрдВ рд▓рдЧрд╛рддрд╛ рдФрд░ рдЗрд╕ рдмрдЧ рдХреЛ рдареАрдХ рдирд╣реАрдВ рдХрд░рддрд╛ред
рд╕рдмрд╕реЗ рдЙрдкрдпреЛрдЧреА рдЯрд┐рдкреНрдкрдгреА
@spydmobile рдпрд╣рд╛рдБ рдЬрд╛рддрд╛ рд╣реИ, рдпрд╣реА рдореИрдВрдиреЗ рдереЛрдбрд╝рд╛ рд╕рдВрд╢реЛрдзрд┐рдд рд░реВрдк рдореЗрдВ рдХрд┐рдпрд╛ рд╣реИ:
рдореБрдЭреЗ рдирд╣реАрдВ рдкрддрд╛ рдХрд┐ рдЗрд╕ рдПрдл * рдЖрдИрдПрдирдЬреА рдЯрд┐рдкреНрдкрдгреА рдХреНрд╖реЗрддреНрд░ рдореЗрдВ рдХреЛрдб рдХреЛ рдареАрдХ рд╕реЗ рдХреИрд╕реЗ рдкреЛрд╕реНрдЯ рдХрд┐рдпрд╛ рдЬрд╛рдП, рдХреНрд╖рдорд╛ рдХрд░реЗрдВред
рдореИрдВрдиреЗ рдЕрдкрдиреА рдЯрд┐рдкреНрдкрдгреА рдХреЛ рдЕрдм рд▓рдЧрднрдЧ 10 рдмрд╛рд░ рд╕рдВрдкрд╛рджрд┐рдд рдХрд┐рдпрд╛ рд╣реИ lol