Ich kenn mich zwar nicht mit Javascript aus, aber ich denke das Problem liegt daran, dass die dynamischen Markierungen mit einem zusätzlichen Javascript-Funktionsblock "function gmap*ID*_dynmap(gmap*ID*)" an einer anderen Stelle der XHTML-Ausgabe eingefügt werden.
Füge ich nämlich statische Markierungen mit dem GoogleMaps Modul ein (also ohne die Katalog-Erweiterung), dann funktioniert es ja auch beim IE6/7. Da werden die Markierungen und die Map alle nur mit einem Javascript-Funktionsblock "function gmap*ID*_initialize()" aufgerufen.
Ich habe das Problem mit den dynamischen Markierungen bei mir nun so gelöst, dass ich das Modul GoogleMaps gar nicht mehr verwende/aufrufe, sondern die Map-Parameter manuell auch ins Katalog-Template verschoben habe und dort auch noch die Javascript Datei im Head eingefügt wird. Somit bleibt alles innerhalb der "function gmap*ID*_initialize()" und es funktioniert nun auch im IE6/7.
Katalog Template:
Code:
<?php if (count($this->entries)): ?>
<?php $GLOBALS['TL_JAVASCRIPT'][] = 'http://maps.google.com/maps/api/js?language=de&sensor=false'; ?>
<?php $myMark = 0; ?>
<div class="mod_dlh_googlemaps block">
<div class="dlh_googlemap block" id="dlh_googlemap_*ID*" style="width:800px;height:500px;"><noscript><p>Google Map</p></noscript></div>
<script type="text/javascript">
<!--//--><![CDATA[//><!--
function gmap*ID*_initialize() {
var gmap*ID*_Options = {
zoom: *Zoom*,
center: new google.maps.LatLng(*Koordinaten*),
mapTypeId: google.maps.MapTypeId.HYBRID,
draggable: true,
disableDoubleClickZoom: false,
scrollwheel: true,
streetViewControl: false,
mapTypeControl: true,
mapTypeControlOptions: {
style: google.maps.MapTypeControlStyle.DEFAULT,
position: google.maps.ControlPosition.TOP_RIGHT,
mapTypeIds: [
google.maps.MapTypeId.HYBRID,
google.maps.MapTypeId.ROADMAP,
google.maps.MapTypeId.SATELLITE,
google.maps.MapTypeId.TERRAIN
]
},
navigationControl: true,
navigationControlOptions: {
style: google.maps.NavigationControlStyle.DEFAULT,
position: google.maps.ControlPosition.TOP_LEFT
},
scaleControl: false
};
var gmap*ID* = new google.maps.Map(document.getElementById("dlh_googlemap_*ID*"), gmap*ID*_Options);
<?php foreach ($this->entries as $entry): ?>
var gmap*ID*_<?php echo $myMark; ?>_marker = new google.maps.Marker({
position: new google.maps.LatLng(<?php echo $entry[data]['googlemap']['value']; ?>),
map: gmap*ID*,
title:"<?php echo $entry[data]['title']['value']; ?>"
});
var gmap*ID*_<?php echo $myMark; ?>_infowindow = new google.maps.InfoWindow({
position: new google.maps.LatLng(<?php echo $entry[data]['googlemap']['value']; ?>),
zIndex: 1,
content: '<?php echo $entry[data]['title']['value']; ?>'
});
google.maps.event.addListener(gmap*ID*_<?php echo $myMark; ?>_marker, 'click', function() {
gmap*ID*_<?php echo $myMark; ?>_infowindow.open(gmap*ID*);
});
<?php $myMark++; ?>
<?php endforeach; ?>
if(window.gmap*ID*_dynmap){
gmap*ID*_dynmap(gmap*ID*);
}
}
window.setTimeout("gmap*ID*_initialize()", 500);
//--><!]]>
</script>
</div>
<?php endif; ?>
Lesezeichen