Skip to content

Commit 6af4eef

Browse files
committed
fix mapbox getView scale for Retina display
1 parent 2b01f3c commit 6af4eef

File tree

1 file changed

+25
-7
lines changed

1 file changed

+25
-7
lines changed

src/plots/mapbox/mapbox.js

Lines changed: 25 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -722,22 +722,40 @@ proto.project = function(v) {
722722
proto.getView = function() {
723723
var map = this.map;
724724
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 };
726728

727729
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+
730748
return {
731749
center: center,
732750
zoom: map.getZoom(),
733751
bearing: map.getBearing(),
734752
pitch: map.getPitch(),
735753
_derived: {
736754
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
741759
]
742760
}
743761
};

0 commit comments

Comments
 (0)