【问题标题】:IE8 throws long running script error while using Google HeatMap overlayIE8 在使用 Google HeatMap 覆盖时引发长时间运行的脚本错误
【发布时间】:2014-01-08 21:15:12
【问题描述】:

我正在尝试使用适用于所有浏览器但不适用于 IE 的 google maps api v3 呈现热图。 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>

【问题讨论】:

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


    【解决方案1】:

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

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

    微软发布了一个补丁来纠正这个问题:http://support.microsoft.com/kb/175500

    请注意,微软还指出,如果需要,可以将其增加到任何级别的注册表项:

    • 使用注册表编辑器,例如Regedt32.exe,打开这个键:

      HKEY_CURRENT_USER\Software\Microsoft\Internet Explorer\Styles

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

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

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

    【讨论】:

      猜你喜欢
      • 2016-03-25
      • 1970-01-01
      • 2019-02-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-09-10
      • 2018-07-02
      相关资源
      最近更新 更多