@@ -722,22 +722,40 @@ proto.project = function(v) {
722
722
proto . getView = function ( ) {
723
723
var map = this . map ;
724
724
var mapCenter = map . getCenter ( ) ;
725
- var center = { lon : mapCenter . lng , lat : mapCenter . lat } ;
725
+ var lon = mapCenter . lng ;
726
+ var lat = mapCenter . lat ;
727
+ var center = { lon : lon , lat : lat } ;
726
728
727
729
var canvas = map . getCanvas ( ) ;
728
- var w = canvas . width ;
729
- var h = canvas . height ;
730
+ var width = canvas . width ;
731
+ var height = canvas . height ;
732
+
733
+ var p00 , p10 , p11 , p01 ;
734
+
735
+ // attempt finding correct scale for Retina display
736
+ for ( var scale = 2 ; scale > 0 ; scale -- ) {
737
+ var w = width / scale ;
738
+ var h = height / scale ;
739
+
740
+ p00 = map . unproject ( [ 0 , 0 ] ) . toArray ( ) ;
741
+ p10 = map . unproject ( [ w , 0 ] ) . toArray ( ) ;
742
+ p11 = map . unproject ( [ w , h ] ) . toArray ( ) ;
743
+ p01 = map . unproject ( [ 0 , h ] ) . toArray ( ) ;
744
+
745
+ if ( Math . abs ( lon - ( p00 [ 0 ] + p11 [ 0 ] ) / 2 ) < 0.0001 ) break ;
746
+ }
747
+
730
748
return {
731
749
center : center ,
732
750
zoom : map . getZoom ( ) ,
733
751
bearing : map . getBearing ( ) ,
734
752
pitch : map . getPitch ( ) ,
735
753
_derived : {
736
754
coordinates : [
737
- map . unproject ( [ 0 , 0 ] ) . toArray ( ) ,
738
- map . unproject ( [ w , 0 ] ) . toArray ( ) ,
739
- map . unproject ( [ w , h ] ) . toArray ( ) ,
740
- map . unproject ( [ 0 , h ] ) . toArray ( )
755
+ p00 ,
756
+ p10 ,
757
+ p11 ,
758
+ p01
741
759
]
742
760
}
743
761
} ;
0 commit comments