2014-10-08 125 views
0

我在谷歌地图上加载了约15,000个标记。多个标记崩溃浏览器

我已经通过每秒使用时间间隔检索了1000个标记。

当它完成和15000标记在地图上加载然后崩溃浏览器。

所以,我必须为这个问题做些什么。

请不要投票下来。

for (x in dataObject) { 
     var infowindow = new google.maps.InfoWindow(); 
     var markerPosition = new google.maps.LatLng(dataObject[x].Latitude, dataObject[x].Longitude); 
     var scaleSize = getSectorSize(dataObject[x].Mapinfo_Sector_Size); 
     var sectorColor = getSectorColor(dataObject[x].Radios); 
     var pathValue = createPie(dataObject[x].MapInfo_Beamwidth); 

     marker = new google.maps.Marker({ 
      position: markerPosition, 
      map: map, 
      icon: { 
       path: pathValue, 
       fillColor: sectorColor, 
       fillOpacity: 1, 
       strokeColor: '', 
       strokeWeight: 0, 
       //scale: 0.8, 
       scale: dataObject[x].Mapinfo_Sector_Size + 0.04, 
       anchor: new google.maps.Point(0, 0), 
       rotation: 250 + dataObject[x].Azimuth, 
       //rotation: 250, 
      }, 
     }); 
+0

在Chrome中,打开开发人员工具,单击时间轴,选中“捕获内存”框,按记录按钮(左上角)并重新加载页面。正在使用多少内存? – 2014-10-08 14:33:27

+0

15,000个标记是一个很大的,我并不感到惊讶,你有一个崩溃!有另一种方法可以显示这些数据吗?例如,在显示数据之前对数据进行采样,以便显示代表相同位置分布的1,000个标记? – 2014-10-08 14:34:29

+0

是的,我知道15000个标记是很多。但是,我必须找到办法做到这一点。感谢您的回复。 – Nikunj 2014-10-09 06:01:01

回答

1

我在谷歌地图的工作项目自己和所看到的性能问题时,标记的数量增加超过500甚至

谷歌地图文档本身提供了一些有效的workarounds,其中我已经使用MarkerClusterer v3,它提供了一个管理大量标记的好方法。 但是使用MarkerClusterer不会改善您的性能问题

如果您仍然希望在单个视口中向用户显示15000个标记(从用户体验的角度来看,它本身听起来不太正确),那么您可以查看是否将标记添加到叠加层,此博客

How To Quickly Add Many Markers Without Killing The Map

提供添加地图上方的重叠(DIV)和添加标记到div的完善的解决方案。该博客还提供了加载1000个标记的示例。我不知道这是否会与15000 :)

希望这会有所帮助。

+0

嘿,朋友谢谢你的回复。我必须尝试这个覆盖。 – Nikunj 2014-10-09 05:56:43

+1

有趣的是,使用Chrome(至少对我而言),* slow *解决方案的加载速度比* fast *快。我想这取决于一些参数,如硬件,操作系统,浏览器等。 – MrUpsidown 2014-10-09 08:01:02