Если вы не используете «стили», вы можете иметь статическое текстовое поле (без текста) или прямоугольник с цветом фона, который вам нужен, перекрывая текстовое поле с данными и устанавливая printWhenExpression в $V{report_COUNT}%2 == 1
ИЛИ $V{report_COUNT}%2 == 0
Чтобы получить MapCanvasProjection, вы можете унаследовать класс от OverlayView и вызвать метод getProjection (), который возвращает тип MapCanvasProjection
onAdd ( ), draw () и onRemove () должны быть реализованы для наследования от OverlayView.
function MyOverlay(options) {
this.setValues(options);
var div = this.div_= document.createElement('div');
div.className = "overlay";
};
// MyOverlay is derived from google.maps.OverlayView
MyOverlay.prototype = new google.maps.OverlayView;
MyOverlay.prototype.onAdd = function() {
var pane = this.getPanes().overlayLayer;
pane.appendChild(this.div_);
}
MyOverlay.prototype.onRemove = function() {
this.div_.parentNode.removeChild(this.div_);
}
MyOverlay.prototype.draw = function() {
var projection = this.getProjection();
var position = projection.fromLatLngToDivPixel(this.getMap().getCenter());
var div = this.div_;
div.style.left = position.x + 'px';
div.style.top = position.y + 'px';
div.style.display = 'block';
};
тогда, когда вы создаете карту
var OverLayMap = new MyOverlay( { map: map } );
Для V2 у вас должна быть возможность вызывать fromLatLngToDivPixel из вашего экземпляра GMap2
var centerPoint = map.fromLatLngToDivPixel(map.getCenter());
var map;
// Create your map
MyOverlay.prototype = new google.maps.OverlayView();
MyOverlay.prototype.onAdd = function() { }
MyOverlay.prototype.onRemove = function() { }
MyOverlay.prototype.draw = function() { }
function MyOverlay(map) { this.setMap(map); }
var overlay = new MyOverlay(map);
var projection = overlay.getProjection();