使用Google HeatMap覆盖时,IE8会引发长时间运行的脚本错误

时间:2014-01-08 21:15:13

标签: google-maps internet-explorer google-maps-api-3 internet-explorer-8 maps

我正在尝试使用google maps api v3渲染热图,该图适用于所有浏览器但不适用于IE。 IE 9需要很长时间才能渲染,但IE8开始抛出“停止运行此脚本”警报,说脚本耗时太长。

我在下面放了一个简单的例子,只有5个集群,IE8仍然会引发长时间运行的脚本错误。你能帮我解决这个问题吗?谢谢!

<script type="text/javascript" src="https://maps.googleapis.com/maps/api/js?libraries=visualization&sensor=false">
</script>

<script type="text/javascript" src="https://code.jquery.com/jquery-1.9.1.min.js"></script>

<script type="text/javascript">

    $(function () {
        var data = [
            { "lat": "45.284397", "lon": "-126.724372", "count": 10 },
            { "lat": "45.284156", "lon": "-126.724853", "count": 5 },
            { "lat": "45.284450", "lon": "-126.725532", "count": 20 },
            { "lat": "45.284839", "lon": "-126.725875", "count": 34 },
            { "lat": "45.285442", "lon": "-126.726181", "count": 46 }
            ];        
        var usaCenter = new google.maps.LatLng(54.6, -119.2);
        var heatMap = new google.maps.Map(document.getElementById('heatMap'), {
            zoom: 4,
            center: usaCenter,
            mapTypeControlOptions: {
                mapTypeIds: ["Traffic", google.maps.MapTypeId.ROADMAP, google.maps.MapTypeId.SATELLITE, google.maps.MapTypeId.HYBRID, google.maps.MapTypeId.TERRAIN]
            },
            mapTypeId: google.maps.MapTypeId.ROADMAP
        });
        var heatMapData = [];
        var bounds = new google.maps.LatLngBounds;
        $.each(data, function (index, point) {
            var latLng = new google.maps.LatLng(point["lat"], point["lon"]);
            var heatPoint = {
                location: latLng,
                weight: point["count"]
            };
            heatMapData.push(heatPoint);
            bounds.extend(latLng);
        });

        var heatmapOverLay = new google.maps.visualization.HeatmapLayer({
            data: heatMapData,
            opacity: 0.7
        });
        heatmapOverLay.setMap(heatMap);
    });
</script>


<div id="heatMap" style="width:1600px;height:1600px"></div>

1 个答案:

答案 0 :(得分:2)

IE8根据语句数量发出此警告,而不是基于脚本运行的时间。我认为这个警告是不准确的。

默认情况下,超时对话框的阈值限制为5,000,000个语句。

Microsoft发布了一个补丁来解决此问题:http://support.microsoft.com/kb/175500

请注意,微软还会指出哪个是注册表项,以便在必要时将其增加到任何级别:

  • 使用Regedt32.exe等注册表编辑器,打开此键:

    HKEY_CURRENT_USER \ Software \ Microsoft \ Internet Explorer \ Styles

    注意如果样式键不存在,请创建一个名为样式的新键。

  • 在此项下创建一个名为“ MaxScriptStatements ”的新DWORD值,并将该值设置为所需的脚本语句数。

如果您不确定需要将其设置为哪个值,可以将其设置为DWORD值0xFFFFFFFF以避免出现该对话框。