Das Problem konnte gelöst werden. Zur Info, falls jemand das gleiche Problem hat:
Das Problem war, dass die Geo-Koordinaten dem google.maps.Geocoder zugewiesen wurden. Dieser liefert keine exakten Ergebnisse, wenn man bei var geocoderOptions.address Geo-Koordinaten übergibt. Darum habe ich das Script nun umgebaut, dass wenn Geo-Koordinaten vorhanden sind, der Geocoder gar nicht zum Einsatz kommt.
Vorher:
PHP-Code:
var map = new google.maps.Map(document.getElementById('<?php echo $this->selector; ?>'),mapOptions);
var geocoder = new google.maps.Geocoder();
var geocoderOptions = {};
<?php if($this->hasCoordinates): ?>
geocoderOptions.address = '<?php echo $this->latitude; ?>,<?php echo $this->longitude; ?>'; <?php //hier dürfen die Geo-Koordinaten nicht zugewiesen werden ?>
<?php else: ?>
var geocoderOptions = {};
geocoderOptions.address = address;
<?php endif; ?>
geocoder.geocode(geocoderOptions, function(results, status)
{
if (status == google.maps.GeocoderStatus.OK)
{
map.setCenter(results[0].geometry.location);
var marker = new google.maps.Marker(
{
map: map,
position: results[0].geometry.location
});
}
});
Neu:
PHP-Code:
var map = new google.maps.Map(document.getElementById('<?php echo $this->selector; ?>'),mapOptions);
<?php if($this->hasCoordinates): ?>
<?php //wenn Geo-Koordinaten vorhanden sind ?>
var pos = {lat:<?php echo $this->latitude; ?>, lng:<?php echo $this->longitude; ?>};
map.setCenter(pos);
var marker = new google.maps.Marker({
map: map,
position: pos
});
<?php else: ?>
<?php //ohne Geo-Koordinaten dafür mit Adresse ?>
var geocoder = new google.maps.Geocoder();
var geocoderOptions = {};
var geocoderOptions.address = address;
geocoder.geocode(geocoderOptions, function(results, status)
{
if (status == google.maps.GeocoderStatus.OK)
{
map.setCenter(results[0].geometry.location);
var marker = new google.maps.Marker(
{
map: map,
position: results[0].geometry.location
});
}
});
<?php endif; ?>
Lesezeichen