Google地图无法在IE8中运行(wordpress)

时间:2014-03-11 11:50:19

标签: wordpress google-maps

不知道为什么......在其他所有浏览器和平台上都能正常运行。

我已经对网络进行了很好的浏览,并尝试了一些建议的修复程序,但这似乎是已经发布的新问题。我希望有人可以提供帮助。

示例页面:http://greenleavesmarketing.co.uk/sherif/contact/

Header.php:

<?php //Map 

echo '<script type="text/javascript">
    function initialize() {
        var locations = [
      [\'';

    if($options['custom_logo']) { 
        echo '<img src="' . $options['custom_logo'] . '" alt="';
        echo bloginfo('name');
        echo '" style="width:150px;padding: 0px; margin: 10px 0px 0px 0px;" />';
    }

echo '<p><strong>'.$options["company"].'</strong><br />'.$options["address-one"].'<br />'.$options["address-two"].'<br />'.$options["postcode"].'</p>\', '.$options["latitude"].', '.$options["longitude"].', 1],';


if($options['latitude2'] != '') {           
echo '[\'';

    if($options['custom_logo']) { 
        echo '<img src="' . $options['custom_logo'] . '" alt="';
        echo bloginfo('name');
        echo '" style="width:150px;padding: 0px; margin: 10px 0px 0px 0px;" />';
    }

echo '<p><strong>'.$options["company"].'</strong><br />'.$options["address-one2"].'<br />'.$options["address-two2"].'<br />'.$options["postcode2"].'</p>\', '.$options["latitude2"].', '.$options["longitude2"].', 2]'; 
}

echo '];

        window.map = new google.maps.Map(document.getElementById(\'map\'), {
            mapTypeId: google.maps.MapTypeId.ROADMAP
        });

        var infowindow = new google.maps.InfoWindow();

        var bounds = new google.maps.LatLngBounds();

        for (i = 0; i < locations.length; i++) {
            marker = new google.maps.Marker({
                position: new google.maps.LatLng(locations[i][1], locations[i][2]),
                map: map
            });

            bounds.extend(marker.position);

            google.maps.event.addListener(marker, \'click\', (function (marker, i) {
                return function () {
                    infowindow.setContent(locations[i][0]);
                    infowindow.open(map, marker);
                }
            })(marker, i));
        }

        map.fitBounds(bounds);

        var listener = google.maps.event.addListener(map, "idle", function () {
            map.setZoom(' . $options["zoom"] . ');
            google.maps.event.removeListener(listener);
        });
    }

    function loadScript() {
        var script = document.createElement(\'script\');
        script.type = \'text/javascript\';
        script.src = \'https://maps.googleapis.com/maps/api/js?v=3.exp&sensor=false&\' + \'callback=initialize\';
        document.body.appendChild(script);
    }

    window.onload = loadScript;





    </script>'; ?>

1 个答案:

答案 0 :(得分:1)

您的locations数组输出为:

 var locations = [
      ['<p><strong>The London Dental Clinic</strong><br />40 Harley St<br />London<br />W1G 9PP</p>', 51.518676921614315, -0.14653116464614, 1],];

IE8将此视为长度为2的数组,然后在JavaScript中导致循环错误。如果您在最后]之前删除逗号,那么它应该可以正常工作。

您应该将您的php更改为:

if($options['custom_logo']) { 
        echo '<img src="' . $options['custom_logo'] . '" alt="';
        echo bloginfo('name');
        echo '" style="width:150px;padding: 0px; margin: 10px 0px 0px 0px;" />';
    }

echo '<p><strong>'.$options["company"].'</strong><br />'.$options["address-one"].'<br />'.$options["address-two"].'<br />'.$options["postcode"].'</p>\', '.$options["latitude"].', '.$options["longitude"].', 1]';


if($options['latitude2'] != '') {           
    echo ', [\'';

    if($options['custom_logo']) { 
        echo '<img src="' . $options['custom_logo'] . '" alt="';
        echo bloginfo('name');
        echo '" style="width:150px;padding: 0px; margin: 10px 0px 0px 0px;" />';
    }

如果定义了第二个位置,请查看我如何将其更改为仅添加逗号?

请注意,我实际上并不了解PHP,因此我可能错误地更改了它:)