@@ -446,23 +446,24 @@ modeBarButtons.hoverClosestGeo = {
446446} ;
447447
448448function handleGeo ( gd , ev ) {
449- var button = ev . currentTarget ,
450- attr = button . getAttribute ( 'data-attr' ) ,
451- val = button . getAttribute ( 'data-val' ) || true ,
452- fullLayout = gd . _fullLayout ,
453- geoIds = Plots . getSubplotIds ( fullLayout , 'geo' ) ;
449+ var button = ev . currentTarget ;
450+ var attr = button . getAttribute ( 'data-attr' ) ;
451+ var val = button . getAttribute ( 'data-val' ) || true ;
452+ var fullLayout = gd . _fullLayout ;
453+ var geoIds = Plots . getSubplotIds ( fullLayout , 'geo' ) ;
454454
455455 for ( var i = 0 ; i < geoIds . length ; i ++ ) {
456- var geo = fullLayout [ geoIds [ i ] ] . _subplot ;
456+ var id = geoIds [ i ] ;
457+ var geoLayout = fullLayout [ id ] ;
457458
458459 if ( attr === 'zoom' ) {
459- var scale = geo . projection . scale ( ) ;
460+ var scale = geoLayout . projection . scale ;
460461 var newScale = ( val === 'in' ) ? 2 * scale : 0.5 * scale ;
461- geo . projection . scale ( newScale ) ;
462- geo . zoom . scale ( newScale ) ;
463- geo . render ( ) ;
462+
463+ Plotly . relayout ( gd , id + '.projection.scale' , newScale ) ;
464+ } else if ( attr === 'reset' ) {
465+ resetView ( gd , 'geo' ) ;
464466 }
465- else if ( attr === 'reset' ) geo . zoomReset ( ) ;
466467 }
467468}
468469
@@ -535,8 +536,8 @@ modeBarButtons.resetViews = {
535536 button . setAttribute ( 'data-attr' , 'resetLastSave' ) ;
536537 handleCamera3d ( gd , ev ) ;
537538
538- // N.B handleCamera3d also triggers a replot for
539- // geo subplots.
539+ resetView ( gd , 'geo' ) ;
540+ resetView ( gd , 'mapbox' ) ;
540541 }
541542} ;
542543
@@ -581,22 +582,26 @@ modeBarButtons.resetViewMapbox = {
581582 attr : 'reset' ,
582583 icon : Icons . home ,
583584 click : function ( gd ) {
584- var fullLayout = gd . _fullLayout ;
585- var subplotIds = Plots . getSubplotIds ( fullLayout , 'mapbox' ) ;
586- var aObj = { } ;
587-
588- for ( var i = 0 ; i < subplotIds . length ; i ++ ) {
589- var id = subplotIds [ i ] ;
590- var subplotObj = fullLayout [ id ] . _subplot ;
591- var viewInitial = subplotObj . viewInitial ;
592- var viewKeys = Object . keys ( viewInitial ) ;
593-
594- for ( var j = 0 ; j < viewKeys . length ; j ++ ) {
595- var key = viewKeys [ j ] ;
596- aObj [ id + '.' + key ] = viewInitial [ key ] ;
597- }
598- }
599-
600- Plotly . relayout ( gd , aObj ) ;
585+ resetView ( gd , 'mapbox' ) ;
601586 }
602587} ;
588+
589+ function resetView ( gd , subplotType ) {
590+ var fullLayout = gd . _fullLayout ;
591+ var subplotIds = Plots . getSubplotIds ( fullLayout , subplotType ) ;
592+ var aObj = { } ;
593+
594+ for ( var i = 0 ; i < subplotIds . length ; i ++ ) {
595+ var id = subplotIds [ i ] ;
596+ var subplotObj = fullLayout [ id ] . _subplot ;
597+ var viewInitial = subplotObj . viewInitial ;
598+ var viewKeys = Object . keys ( viewInitial ) ;
599+
600+ for ( var j = 0 ; j < viewKeys . length ; j ++ ) {
601+ var key = viewKeys [ j ] ;
602+ aObj [ id + '.' + key ] = viewInitial [ key ] ;
603+ }
604+ }
605+
606+ Plotly . relayout ( gd , aObj ) ;
607+ }
0 commit comments