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 ïŒ
ãã®äŸã§ã¯ãããããåé€ãããåŸã¯ãšã©ãŒã衚瀺ãããªããããçºçããŠããåé¡ã®åå ãšãªãäœããããã«é²è¡ããŠããããã§ãã ããã远跡ã§ããããã«ã詳现ãæããŠãã ããã
@perliedmanè¿ éãªå¯Ÿå¿ãšãéã³å Žã®äŸããŸãšããŠãããŠããããšãã ããã¯åçŸã§ããŸããã ããã«ããã€ãã®ã·ããªãªãè©ŠããŠãã ããã ç§ããŸã ããã調ã¹ãŠããéãããã€ãã®è³ªå-
map.remove()
å®è¡ããŠããå Žåãæ瀺çãªã¬ã€ã€ãŒã®åé€ã¯å¿
èŠã§ããïŒ ç§ã®æšæž¬ã§ã¯ãããã¯å±€ã®é€å»ãåŠçããŸããã確èªã§ããŸããã
ãŸããã¿ã€ã ã¢ãŠãæã«map.removeïŒïŒãããçç±ã¯ããã®äŸã§ã¯äœæçŽåŸã«ããããç Žæ£ããŠããããã§ãããã以å€ã®å Žåã¯ãã¿ã€ã ã¢ãŠãã§å²ãå¿ èŠã¯ãããŸããã æ£ããïŒ
ãªãŒãã³ãœãŒã¹ã§äœæ¥ãããšãã¯ããœãŒã¹ã_䜿çš_ããããšãå¿ããªãã§ãã ããïŒ ïŒwinkïŒæåã®è³ªå_yes_ã«çããããã«ã remove
ã¯ã¬ã€ã€ãŒãåé€ããŸãïŒ https ïŒ
ã¿ã€ã ã¢ãŠãã«ããçç±ã¯ãäŸãããå°ãçŸå®çã«ããŠãã¿ã€ã«ã¬ã€ã€ãŒãããŒããããã¿ã€ã«ãªã©ã§å®éã«æ£ããåæåãããŠããããšã確èªããããã§ãããã®äŸã¯ã remove
åŒã³åºããå
¥ããªããŠãåæ§ã«æ©èœããŸããã¿ã€ã ã¢ãŠãã§ãããå°ã人工çãªãã¹ãã®ããã§ãã
ããã«ã¡ã¯âç§ããã®åé¡ãçµéšããŠãããšæããŸãã ãããç§ã®åºæ¬çãªãŠãŒã¹ã±ãŒã¹ã§ãïŒ
å®éã®å°å³ã衚瀺ããã®ã§ã¯ãªããè€æ°ã®ããŒãž/ãµãŒãã§ã¹ãæã€ãªããžã§ã¯ãçšã®ãã¥ãŒã¢ã³ã³ããŒãã³ããæ§ç¯ããŠããŸãïŒ Leaflet-IIIFãã©ã°ã€ã³ã䜿çšããŠããŸãããããã§ã¯äœã圱é¿ããªããšæããŸãïŒã ãã¥ãŒã¢ãèªã¿èŸŒãŸãããšããŠãŒã¶ãŒãã¯ãªãã¯ããŠUIã®äžå€®é åã«è¡šç€ºãããŠãããªããžã§ã¯ãã®ãã¥ãŒãæŽæ°ã§ããäžé£ã®ãµã ãã€ã«ããããŸãã
ãŠãŒã¶ãŒããã¥ãŒãå€æŽãããšãæ°ãããã¥ãŒã®æ°ããããããèšå®ããåã«map.remove()
åŒã³åºããŸãã æ°ãããããã¯ãå€ãããããšåãDOMèŠçŽ ïŒIDãæã€divïŒã«äœæãããLeaflet以å€ã§ã¯DOMãå€æŽããŠããŸããã
æåã®ãã¥ãŒã§ã¯ããã¹ãŠãæ£åžžã«æ©èœããŸãã ãããã map.remove()
ãåŒã³åºããŠæ°ãããã¥ãŒã衚瀺ããåŸãã³ã³ãœãŒã«ã¯æ¬¡ã®ããã«æå¥ãèšããŸãïŒãããããã©ãã°ãŸãã¯ãºãŒã ããããã³ã«Cannot read property '_leaflet_pos' of undefined
ã
ããæç¹ã§æå°éã®äŸãæçš¿ããããšãè©Šã¿ãããšãã§ããŸãããããã¯åãåé¡ã®ããã§ãã ãã®ãšã©ãŒã¯Chromeã§çºçããŸãããFirefoxã§ã¯çºçããŸããã
@egardnerã¯ãããããåçŸããäŸãäœæããŠã¿ãŠãã ããïŒ
@egardner以åã¯å®å®ããŠããé»åïŒã¯ãã +ããŒãïŒã¢ããªã§ãŸã£ããåãåé¡ãå
ã«æ»ããªããã°ãªããŸããã§ããïŒ
ããªãŒãã¬ãããïŒã1.0.0ãã
"leaflet.markercluster"ïŒ "1.0.0-rc.1.0"
1.2.0ãããšã©ãŒãåé€ããã«ã¯æªå®çŸ©ã®ãããã㣠'_leaflet_pos'ãèªã¿åããŸãã
ããã¯ãåãDOMèŠçŽ ã§ããããåäœæããåã®map.removeïŒïŒã®åŸã§ããããŸããã çæçã«äœæããŠäŸã瀺ãæéããããŸãã
ããããç Žå£ããããšããŠãåæ§ã®åé¡ãçºçããŠããŸããåç §ãä¿æããŠããããã§ã
äžã§è¿°ã¹ãããšãç¹°ãè¿ããŸãããã®åé¡ã«ã€ããŠäœã§ãã§ããããã«ããããã«ãåé¡ãåçŸããäŸãæäŸããŠãã ããã
ããã ç§ã¯ãã®ãšã©ãŒããã£ãã«ã§åçŸããŸããã ç°¡åã«èšãã°ãdivèŠçŽ å
ã«ããããäœæããremoveã¡ãœããã䜿çšããŠãããåãdivã«ããããåå
¥åãããšããããã移åãããã³ã«ãšã©ãŒãçºçããŸãã
Uncaught TypeErrorïŒundefinedã®ãããã㣠'_leaflet_pos'ãèªã¿åãããšãã§ããŸããã
åçŸããã«ã¯ããã£ãã«ãéãã[ãããã®åé€]ãã¯ãªãã¯ãã[ãããã®é
眮]ãã¯ãªãã¯ããŠãããã³ã³ãœãŒã«ãéããŠãããã移åããŸãã
http://jsfiddle.net/spydmobile/5hmadjnk/
FFã§ã¯ãªãChormeã§ã®ã¿çºçããããšã«æ³šæããŠãã ãã
ã¯ãspydmobileäŸãããããšããããã¯ç§ãäžã§å ±åããã®ãšåãChromeã§èŠãŠãããšã©ãŒã§ã
åããšã©ãŒã衚瀺ãããŸããããŠãŒã¹ã±ãŒã¹ãå°ãç°ãªããŸãã 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.x.x
ããŒãžã§ã³ã«ããã¯ããŠã³ã§ãããããããªããšæã£ãŠãããã€ãã®å€ãããŒãžã§ã³ïŒ 1.0.3
ã1.2.0
ïŒãè©ŠããŸããããããŸããããŸããã§ããã
ããã«é¢ããæŽæ°ã¯ãããŸããïŒ ããã§åãåé¡ãçºçãããªãŒãã¬ãããã¢ããªã±ãŒã·ã§ã³ã«çµ±åããŠããŸãã ããããç Žæ£ãããåŸããdomèŠçŽ ã«ã¯ãŸã _leaflet_eventsããããã£ããããŸããããã®ãªããžã§ã¯ããåé€ããŠã圹ã«ç«ã¡ãŸããã§ããã
ãã³ãã©ãŒé¢æ°ã®ã³ã³ããã¹ããå€ããªã£ãŠããããã§ãïŒãã³ãã©ãŒåŒæ°ã®_mapPaneãã©ã€ããŒãããããã£ãååšããªãèŠçŽ ãæããŠããŸãïŒã
ç§ããããçµéšããŠããŸãã ããã¯ç§ãèŠãŠããã¹ããŒãããäŸå€ã®1ã€ã§ãïŒ
https://sentry.io/share/issue/b414c58ea85c44ee9e0e40ad0781883a/
ããã¯äž»ã«ããŠãŒã¶ãŒããã©ãŠã¶ã®æ»ããã¿ã³ã䜿çšããŠå°å³ãé¢ãããšãã«çºçããããã§ãã
ç§ã¯è§£æ±ºçãèŠã€ãããããããªããšæããŸãïŒ
Mapã³ã³ããdivã«ã¯ã map.off
ããã³map.remove
åŸã§ããçºçããããã€ãã®ã€ãã³ãããŸã ãããŸãã
ç§ã®å Žåããããã«ã¯_leaflet_
ã§å§ãŸãããããã£ãããããããã®é¢æ°ã®ããã€ãã¯ãããããã£"map._leaflet_events".
ãããèªäœã«ããããšãããããŸããã
ãããã¯pointerdown
ã pointermove
ãªã©ãšããŠæ·»ä»ãããŠããããã§ãããããããã£ã®ååã¯map._leaflet_touchstarttouchstart32
ãªã©ã®ããã«ãªã£ãŠããŸãã
ããããç¹°ãè¿ããŠæåã§åé€ãããšïŒ removeEventListener
ã䜿çšããŠ
ããã¯ãŸããç§ãèŠãŠããã¡ã¢ãªãªãŒã¯ã«çµæ¢ç¬Šãæã¡ãŸããã
ããã«ã³ãŒããæçš¿ããããšã¯ã§ããŸãããããªãŒãã¬ããã®ãœãŒã¹ã§POINTER_DOWN
ãæ€çŽ¢ãããšãæ·»ä»ãããã€ãã³ãã衚瀺ãããããããåãé¢ãæ¹æ³ãããããŸãã
ããã¯Chromeã ãã§ãªããFFã§ãåçŸã§ããŸãïŒèªåã®ãããžã§ã¯ããš@spydmobileãæäŸããjsfiddleã®äž¡æ¹ã§ïŒ
@FLoiblãããããåé¿çãšããŠããŸã䜿çšããŠãããã¯ããã¯ã瀺ãããã«ãèŠç¹ããã£ãã«ããŸãã¯ä»ã®å Žæã«æçš¿ãããã¹ããããã§ããïŒ
@spydmobileã¯ããã«ãããŸããããã¯ç§ããããã«å€æŽããã圢åŒã§ããããšã§ãïŒ
ãã®f * ingã³ã¡ã³ããã£ãŒã«ãã«ã³ãŒããæ£ããæçš¿ããæ¹æ³ãããããŸãããç³ãèš³ãããŸããã
èªåã®ã³ã¡ã³ãã10åãããç·šéããŸããç¬
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);
}
@FLoiblhttps ïŒ //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/fe9e0f2333888e8c02b9e7f83bf337 jsïŒL133
ãããã¯æã«ãã¹ãŠã®ã€ãã³ãã®ããã«å®è¡ããŠããå¿
èŠãL.Map
ç Žå£ãããããªãããã£ãŠããããšãšåãããšããã£ãŠããã¯ãã§ãããäºæ³éããããã¯ä»äºãããªãçç±ã®ã ãããã
ãããç§ã¯ãã®é¢æ°ãç¥ã£ãŠããŠããããåŒã³åºãããã®ãèŠãŠããŸããããã¹ãŠã®ã€ãã³ãã«å¯ŸããŠã§ã¯ãããŸããã
åé¡ã¯ãã³ãŒãããããããpointermoveããªã©ãšããŠdomã«ã¢ã¿ããããŠããããšã ãšæããŸãããããããã£åã¯ãtouchstartããªã©ã§ãããŸãããtouchstartããšããåèªãããããã£åã«2å衚瀺ãããŸããããã¯ãäºæããªãdoubeconcatã®å¯èœæ§ããããŸãã IDãšã€ãã³ãåïŒ
ãŸãããããã®ããã€ã³ã¿ãŒãã€ãã³ãã¯ãã¿ããã¹ã¯ãªãŒã³ã®ãªãWindows 10ãChromeã§ãæ·»ä»ããå¿
èŠããããŸããïŒ
æ®å¿µãªãããç§ã¯å®éã®ä¿®æ£ãæäŸããããã®ãªãŒãã¬ããã®å
éšã®ä»çµã¿ã«ã€ããŠååã«ç¥ããŸãã:-(
ç§ã¯ãã®é¢æ°ãç¥ã£ãŠããŠããããåŒã³åºãããã®ãèŠãŠããŸããããã¹ãŠã®ã€ãã³ãã«å¯ŸããŠã§ã¯ãããŸããã
ããã§åé¡ã¯ã removePointerListener
ãåŒã³åºãããªãã€ãã³ãã¯äœã§ããïŒ ãã¶ãããã¡ãã¡ã§é¢æ°åŒã³åºããæ¬ èœããŠããŸãã
ãŸãããããã®ããã€ã³ã¿ãŒãã€ãã³ãã¯ãã¿ããã¹ã¯ãªãŒã³ã®ãªãWindows 10ãChromeã§ãæ·»ä»ããå¿ èŠããããŸããïŒ
ã¯ãã ã·ã¹ãã ã«ã¿ããã¹ã¯ãªãŒã³ããããã©ãããæ€åºããããšã¯ã»ãŒäžå¯èœã§ããããããã©ãŠã¶ããã€ã³ã¿ã€ãã³ãããµããŒãããŠããå Žåã¯ããããã䜿çšããããš
ç§ã¯å®éã®ä¿®æ£ãæäŸããããã®ãªãŒãã¬ããã®å éšã®ä»çµã¿ã«ã€ããŠååã«ç¥ããŸãã:-(
ããã絶æããªãã§ãã ãããããã¯çŽ æŽããã調æ»äœæ¥ã§ãïŒ ïŒç¬é¡ïŒ
ãã®ãã°ã¯ããŒãžã§ã³1.0.3ã«ã¯ååšããŸããã @spydmobile jsfiddleãå ¥æãããªãŒãã¬ããã®ããŒãžã§ã³ãå€æŽãããšããšã©ãŒã¯æ¶ããŸãhttp://jsfiddle.net/5hmadjnk/47/ ã ããŒãžã§ã³1.1.0ã§ã¯ããã§ã«ååšããŠããŸãã
@ benru89ãã®ãã°ã¯ãå®éã«ã¯1.0.3ã«https://github.com/Leaflet/Leaflet/issues/5263ã®åœ¢åŒã§ååšããŠããŸããïŒäž»ã«
ä»ã圱é¿ãåãã1.0.3ãã1.1.0ãžã®å€æŽã¯éæšå¥šL.Mixin.Events
ç§ã¯ããããªãã§ãããŠããããã«ããŠã³è¿œè·¡ããããšãã§ããªããšæãã®ã§ããšrollupJSãã«ããgit bisect
ã
@IvanSanchez 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è¡ç®ãåé€ãããšãmapPaneãåé€ããè¡ã§ãšã©ãŒããªããªããŸãã ãã ãããããåé€ããå Žåã®åœ±é¿ã¯ããããŸãããmapPaneãåé€ããå¿ èŠããããšæããŸããããã®ãã°ã¯ããã®è¡ãè¿œå ããããšãã«ç¢ºå®ã«çºçããŸããã
@ benru89ãããŒããããè¯ãæ å ±ã§ãïŒ+1ïŒ
ïŒthinkingïŒããçŸåšããããã€ã³ã«ã©ã®ãã€ã³ã¿ã€ãã³ããã³ãã©ãååšããããããããŸããã
ããããã€ã³ãåé€ããªãããšã§ãåé¡ãé ãã ãã ãšæããŸãã ã³ãŒã«ã¹ã¿ãã¯ã远跡ãããšããåé¡ã¯ãäžéšã®_mapPaneãªããžã§ã¯ããç Žå£ãããdomèŠçŽ ãæããŠãããããæªå®çŸ©ãããã£ãã·ã¥ãããäœçœ®ãååŸããããšããããšã§ããã ãã€ã³ãç Žæ£ãããŠããªãå ŽåããŽãŒã¹ãã€ãã³ãã¯äŸå€ãããªã¬ãŒããã«ééããå¯èœæ§ããããŸãã
@Floiblç§ã¯ããªãã«åæããŸããããã¯è§£æ±ºçã§ã¯ãªããšæããŸãããåŒã³åºãã¹ã¿ãã¯ããã§ãã¯ãããšãã«null _mapPaneã«æ°ã¥ããã®ã§ããã®è¡ãåé€ããããšããŸããã§ããã 解決çã¯ãç§ãæšæž¬ããã€ãã³ããã³ãã©ãŒãé©åã«åé€ããåŽã«ããå¿ èŠããããŸãã
ãããåŒãèµ·ãããŠããã€ãã³ããã³ãã©ãŒïŒå°ãªããšãç§ã®å Žåãš@spydmobile ïŒã¯ãtouchExtendããšåŒã°ããŠããã®ã§ãleaflet.drawãã³ãã©ãŒã ãšæããŸãã leaflet.drawã®ã€ã³ããŒããåé€ãããšãäŸå€ãåæ¢ããããšãããããŸããã
å¥ã®åé¿çãèŠã€ããŸããã ææžåãããŠããªããªãã·ã§ã³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_ã§ããããã return el._leaflet_pos
倱æããŸãã
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ã§ãåãåé¡ã è€éãªåé¡ã§ã
ãããSSCCEã§ãïŒ https ïŒ//jsfiddle.net/0oafw694/1/
åºæ¬çã«ã次ã®ã³ãŒããå®è¡ããŸãâŠ
map = L.map('map');
map.setView(...);
map.setMaxBounds(...);
map.remove();
âŠ2ã€ã®ã€ãã³ããªã¹ããŒãã¢ã¿ãããããŸãŸã«ããŸãã
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
ã¯ç»é²ã解é€ããå¿
èŠããããŸãã PRãçšæããŸãâŠ
åçIDãæã€ãããã®divãäœæããããšã«ãªã£ãã®ã§ãdivãåå©çšããå¿ èŠãããå Žåã¯ãã¡ã¢ãªã解æŸããããã«æ¢åã®ããããremoveïŒïŒããŠããïŒãŸã çºçããŠããã€ãã³ããããã€ããããŸãïŒãç°ãªãIDã§divãåæç»ããŠãæ°ããããããäœæããŸãã
ãŸãããã¹ãŠã®ãããããªããžã§ã¯ãã«ä¿åããŠããã®ã§ããã®IDã«åŸã£ãŠããããæäœã§ããŸãïŒè€æ°ã®ãããã衚瀺ãããããšãããããã¹ãŠåçIDã䜿çšãããŸãïŒ
ãªãŒãã¬ããã䜿ã£ãç§ã®å®éšã«ãããšãéçºè
ãæäœããã€ãã³ãïŒmoveendãmovestartãªã©ïŒã¯ãã¹ãŠãããã©ã«ãã®åäœãå€æŽããDOMãããªãŒãã¬ãããã¢ã³ããŒãããéã¡ã¢ãªã«æ®ããŸãã
ç§ã¯ãããè¡ããŸããïŒ @moveend="()=>{enableRecenter = true}"
ãªã©ããããã®ã¢ã³ããŒã/åé€äžããmoveendãã®ãã³ãã©ãŒã¯ã¡ã¢ãªã«æ®ããŸããã
ãããã®ã¡ãœããã®æäœïŒèªåã®å®è£
ïŒããããã³ã³ããŒãã³ãèªäœããåé€ãããšããããã®ãšã©ãŒã衚瀺ãããªããªããŸããã
ãããã£ãŠãåºæ¬çã«ããããã¡ãœããã«ã¯çµ¶å¯Ÿã«è§Šããªãã§ãã ãã!!! ãã¡ãããã©ã€ãã©ãªããã®åäœãæ€åºããŠãã®ãã°ãä¿®æ£ããªãéãã
æãåèã«ãªãã³ã¡ã³ã
@spydmobileã¯ããã«ãããŸããããã¯ç§ããããã«å€æŽããã圢åŒã§ããããšã§ãïŒ
ãã®f * ingã³ã¡ã³ããã£ãŒã«ãã«ã³ãŒããæ£ããæçš¿ããæ¹æ³ãããããŸãããç³ãèš³ãããŸããã
èªåã®ã³ã¡ã³ãã10åãããç·šéããŸããç¬