Mein Beispiel von oben funktioniert (nachdem ich den Wert für Zoom noch durch parseInt() gejagt hatte). Aber das macht keinen Sinn, deswegen brauchen wir da auch nicht weiter nach nem Fehler zu suchen.
Das mit dem fitBounds() hast du gut gefunden. Hier der Patch.
1. Ersetze im ROOT\templates\ce_dlh_googlemaps_default.html5 (oder umbenennen und zuweisen) die komplette Funktion google.maps.event.addDomListener() mit dieser Funktion hier:
PHP-Code:
/**
* Fit to bounds Patch 1
* Fit to bounds with multiple markers on resize else center
*/
google.maps.event.addDomListener(window, 'resize', function() {
// with multiple markers
if(gmap<?=$this->map['id'];?>_markers.length > 1) {
// new empty LatLngBounds object
var bounds = new google.maps.LatLngBounds();
// put markers into bounds object
for (var i = 0; i < gmap<?=$this->map['id'];?>_markers.length; i++) {
bounds.extend(gmap<?=$this->map['id'];?>_markers[i].getPosition());
}
// Remove one zoom level after fitBounds() to ensure no marker is on the edge
google.maps.event.addListenerOnce(gmap<?=$this->map['id'];?>, 'bounds_changed', function() {
this.setZoom(gmap<?=$this->map['id'];?>.getZoom()-1);
});
// Fit
gmap<?=$this->map['id'];?>.fitBounds(bounds);
}
// with only one marker
else {
var center = gmap<?= $this->map['id'];?>.getCenter();
google.maps.event.trigger(gmap<?= $this->map['id'];?>, 'resize');
gmap<?=$this->map['id'];?>.setCenter(center);
}
});
/** Fit to bounds Patch 1 - END */
2. Ergänze die gmap_initialize() Funktion im gleichen Template am Ende mit diesem Block:
PHP-Code:
// tabcontrol
echo $this->tabs ? $this->map['tabsCode'] : ''; ?>
/**
* Fit to bounds Patch 2
* Fit to bounds with multiple markers on first run
*/
// only with multiple markers
if(gmap<?=$this->map['id'];?>_markers.length > 1) {
// new empty LatLngBounds object
var bounds = new google.maps.LatLngBounds();
// put markers into bounds object
for (var i = 0; i < gmap<?=$this->map['id'];?>_markers.length; i++) {
bounds.extend(gmap<?=$this->map['id'];?>_markers[i].getPosition());
}
// Remove one zoom level after fitBounds() to ensure no marker is on the edge
google.maps.event.addListenerOnce(gmap<?=$this->map['id'];?>, 'bounds_changed', function() {
this.setZoom(gmap<?=$this->map['id'];?>.getZoom()-1);
});
// Fit
gmap<?=$this->map['id'];?>.fitBounds(bounds);
}
/** Fit to bounds Patch 2 - END */
Lesezeichen