ol.Overlay bug (fixed)
by Simon Seyock
HTML
<script src="http://ol3js.org/en/master/build/ol-debug.js"></script>
<div class="map" id="map"></div>
<div class="log"></div>
CSS
.map {
height: 400px;
width: 100%;
}
.label {
background-color: white;
}
JavaScript
var layers = [new ol.layer.Tile({
source: new ol.source.MapQuest({layer: 'sat'})
})];
var center = ol.proj.transform([37.41, 8.82], 'EPSG:4326', 'EPSG:3857');
var view = new ol.View({
center: center,
zoom: 4
});
//BUGFIX BEGIN
ol.Overlay.prototype.updatePixelPosition_ = function() {
var map = this.getMap();
var position = this.getPosition();
if (!goog.isDef(map) || !map.isRendered() || !goog.isDef(position)) {
if (this.rendered_.visible) {
goog.style.setElementShown(this.element_, false);
this.rendered_.visible = false;
}
return;
}
var pixel = map.getPixelFromCoordinate(position);
goog.asserts.assert(!goog.isNull(pixel));
var mapSize = map.getSize();
goog.asserts.assert(goog.isDef(mapSize));
var style = this.element_.style;
var offset = this.getOffset();
goog.asserts.assert(goog.isArray(offset));
var positioning = this.getPositioning();
goog.asserts.assert(goog.isDef(positioning));
var offsetX = offset[0];
var offsetY = offset[1];
if (positioning == ol.OverlayPositioning.BOTTOM_RIGHT ||
positioning == ol.OverlayPositioning.CENTER_RIGHT ||
positioning == ol.OverlayPositioning.TOP_RIGHT) {
if (this.rendered_.left_ !== '') {
this.rendered_.left_ = style.left = '';
}
//offsetX -= goog.style.getSize(this.element_).width;
var right = Math.round(mapSize[0] - pixel[0] - offsetX) + 'px';
if (this.rendered_.right_ != right) {
this.rendered_.right_ = style.right = right;
}
} else {
if (this.rendered_.right_ !== '') {
this.rendered_.right_ = style.right = '';
}
if (positioning == ol.OverlayPositioning.BOTTOM_CENTER ||
positioning == ol.OverlayPositioning.CENTER_CENTER ||
positioning == ol.OverlayPositioning.TOP_CENTER) {
offsetX -= goog.style.getSize(this.element_).width / 2;
}
var left = Math.round(pixel[0] + offsetX) + 'px';
if (this.rendered_.left_ != left) {
this.rendered_.left_ = style.left...