Marker中新的Google Maps Symbol对象使IE非常慢

rat*_*tek 5 javascript internet-explorer google-maps

我正在测试Google Maps V3 API的新Symbols对象.我已经使用相同的符号路径和颜色设置了400个标记的每个"图标"属性.

使用Firefox或Chrome查看示例页面时,所有内容都会快速加载并且运行良好.

不幸的是...... Internet Explorer中的性能非常糟糕.在加载时以及我尝试拖动或缩放地图时都不好.

这是一个简单的javascript示例,您可以使用它来测试IE

  var map;
  function initialize() {
    var mapDiv = document.getElementById('map-canvas');
    map = new google.maps.Map(mapDiv, {
      center: new google.maps.LatLng(37.4419, -122.1419),
      zoom: 13,
      mapTypeId: google.maps.MapTypeId.ROADMAP
    });

    google.maps.event.addListenerOnce(map, 'tilesloaded', addMarkers);

  }

  function addMarkers() {
    var bounds = map.getBounds();
    var southWest = bounds.getSouthWest();
    var northEast = bounds.getNorthEast();
    var lngSpan = northEast.lng() - southWest.lng();
    var latSpan = northEast.lat() - southWest.lat();
    for (var i = 0; i < 400; i++) {
      var latLng = new google.maps.LatLng(southWest.lat() + latSpan * Math.random(),
                                          southWest.lng() + lngSpan * Math.random());
      var marker = new google.maps.Marker({
        position: latLng,
        icon:{  
            path: google.maps.SymbolPath.CIRCLE,
            fillOpacity: 1,
            strokeWeight: 0,
            scale: 4
         },
       map: map
      });
    }
  }
Run Code Online (Sandbox Code Playgroud)

当你使用它带来一些额外的属性和事件时,它会变得最糟糕!但是如果您只是删除标记的"图标"属性,则会显示基本的Google标记,并且所有内容都与Chrome和Firefox一样快......

有没有人有一个答案为什么在使用Symbol时IE的速度很慢,我怎样才能加快这个过程.

谢谢!

j0n*_*nes 1

Google 地图上的符号图标是新VectorIcons的一部分。这些不是位图,而是被描述为 SVG 格式的矢量路径。这些基本上是带有很多点的路径,直到形状完成为止。

现在你有很多图标,这意味着需要绘制很多 SVG 路径。当您在不同浏览器中看到不同的渲染速度时,您基本上是在比较浏览器的 SVG 渲染引擎 - 从您的应用程序来看,IE9 比其他浏览器慢。

我认为没有办法可以加快速度。您可以减少显示标记的数量(例如通过聚类),直到达到可接受的渲染速度。或者您可以简单地使用位图图标。