0

我正在使用 Google Maps API v3,但 IE8,9 出现问题。请注意,在其他浏览器中它可以完美运行,没有错误(在页面或控制台上)。

jQuery(document).ready(function () {

    var target = jQuery('.google-map'),
        desiredheight = target.parent().siblings('div').height();

    target.height(desiredheight);

});

jQuery(document).ready(function () {

    var target = jQuery('.google-map'),
        myLatlng, myOptions, map, infowindow, marker, mapStyle, styledMap;

    if (target.length > 0) {

        myLatlng = new google.maps.LatLng(target.attr('data-latitude'), target.attr('data-longitude'));

        myOptions = {
            zoom: parseInt(target.attr('data-zoom'), 10) || 6,
            center: myLatlng,
            html: target.attr('data-title'),
            mapTypeControl: false,
            popup: true,
            mapTypeId: google.maps.MapTypeId.ROADMAP
        };

        map = new google.maps.Map(target[0], myOptions);

        mapStyle = [{
            stylers: [{
                saturation: -100
            }]
        }, {
            featureType: 'road',
            elementType: 'geometry',
            stylers: [{
                lightness: 100
            }, {
                visibility: 'simplified'
            }]
        }, {
            featureType: 'road',
            elementType: 'labels',
            stylers: [{
                visibility: 'off'
            }]
        }];

        if (mapStyle) {

            styledMap = new google.maps.StyledMapType(mapStyle, {
                name: 'InspireThemes'
            });
            map.mapTypes.set('map_style', styledMap);
            map.setMapTypeId('map_style');

        }

        infowindow = new google.maps.InfoWindow({
            content: target.attr('data-content')
        });

        marker = new google.maps.Marker({
            position: myLatlng,
            map: map,
            title: target.attr('data-title')
        });

        google.maps.event.addListener(marker, 'click', function () {

            infowindow.open(map, marker);

        });

    }

});

我在第 72 行收到错误报告,这将是:

myLatlng = new google.maps.LatLng( target.attr( 'data-latitude' ), target.attr( 'data-longitude' ) );


现在,我当然尝试了谷歌,所有问题都是由数组或对象末尾的额外逗号引起的,这在 IE 中当然不起作用。但即使我的问题确实有这样的症状,我也无法弄清楚我会在哪里有额外的逗号。

我尝试了各种 js 工具,但没有帮助。

4

2 回答 2

0

通过上传到实时服务器解决了问题,localhost 导致了问题。

感谢所有帮助过的人,我很感激!

于 2013-04-06T18:10:20.600 回答
0

老实说,我实际上并不熟悉他们 API 的这一部分,也不了解您的整个用例,但从您的其余代码来看,我认为问题在于您没有指定哪个目标采用该属性从这里:

myLatlng = new google.maps.LatLng( target.attr( 'data-latitude' ), target.attr( 'data-longitude' ) ); 

它认为它应该是:

myLatlng = new google.maps.LatLng( target[i].attr( 'data-latitude' ), target[i].attr( 'data-longitude' ) );

您从中获取该属性i的对象的索引在哪里。target


(数组中的第一个元素是一个 jQuery 元素)。 这也可以解释为什么object expected当您调用.attron时会出现错误target,它是一个对象数组,但它本身不是一个对象。这可能有点令人困惑,因为.attr可以在 jQuery 数组上调用 jQuery 方法,但target它不是 jQuery 数组,即使是这样,您也可能不会得到预期的结果。


更新

这不是答案,但您可能还需要parseInt调用target.attr('data-latitude')and target.attr('data-longitude')

于 2013-04-06T17:41:22.600 回答