【问题标题】:Optimizing CSS animation for SVG map with hundreds of markers使用数百个标记优化 SVG 地图的 CSS 动画
【发布时间】:2022-01-19 13:36:28
【问题描述】:

我有一个带有大约 320 个点标记的自定义 SVG 地图。我正在尝试在标记上做一些动画。第一个是通过不透明动画让它们散布负载(最终在初始负载之后添加一些其他动画,例如每秒左右随机发光一个)。

Example on CodePen

页面加载后,JS 将带有自定义延迟的 CSS 动画添加到每个标记。当我把它放在一个页面上时,整个浏览器变得笨拙并且不会滚动,并且我的 CPU 开始发出各种噪音,所以不知何故需要更好地优化它以不杀死用户的计算机。在 CodePen 中,由于某种原因,它似乎并没有引起那么严重的问题,但是对于后半部分标记,动画确实变得笨拙。

我尝试过使用 jQuery animate 并没有帮助,因为我遇到了同样的性能问题。

问题仅仅是标记过多吗?

HTML

<div id="map">
    <div class="container">
          <!-- SVG CODE IS HERE, SEE CodePen as it is too big to fit here -->
    </div>
</div>

CSS

#map { 
  background: radial-gradient(circle, rgba(77,75,75,1) 0%, rgba(47,47,47,1) 100%); 
  padding: 50px; 
}
#markers circle { 
  fill: #4ca7fc; 
  stroke: rgba(255,255,255,0.44); 
  stroke-width: 1; 
  opacity: 0; 
}
@keyframes enter {
  0% {
    opacity: 0;
  }
  100% {
      opacity: 1;
  }
}

JS(使用 jQuery)

var animation_delay = 0;
jQuery( '#markers circle' ).each(function(){
  animation_delay += .01;
  jQuery( this ).css( 'animation', 'enter 1s ease-out ' + animation_delay + 's normal 1 forwards' );
});

【问题讨论】:

    标签: jquery css css-animations


    【解决方案1】:

    我通过在 SVG 文件中将地图标记以 10 个为一组来解决这个问题。然后我在组而不是单个标记上做了淡入动画。这将其从 320 个动画更改为 32 个并显着提高了性能。

    【讨论】:

      【解决方案2】:

      路径复杂度与像素

      在您的情况下,基于光栅/像素的地图背景也可以提高渲染性能。

      仅世界地图 svg 就有约 200KB 和约 7800 个路径段。
      svg 渲染器的工作量相当大(即使在桌面上,我也看到了一张逐步渲染大陆的地图)。

      相比之下,具有透明度的 2600x1422px png8 可以减少到 ~60KB。

      您可以将srcset 用于不同的视口,如下所示:

          <img id="mapBG" class="mapBG" src="map-480px.png" srcset="map_480px.png 480w, map_640px.png 640w, map_vector.svg 2400w" alt="map">
      

      简化过滤器

      Svg 过滤器非常先进,但在渲染性能方面往往非常昂贵——尤其是在应用于大量元素时。
      也许您可以使用 css 属性获得视觉上相似的结果。

      标记的延迟渲染

      如果您想在您的网站/应用程序上多次使用此地图,则通过可缓存的 &lt;img&gt; 元素加载您的地图可能是一个不错的建议。

      因此,您的标记应该在地图背景完全加载并渲染后开始弹出。

      示例

      这个 sn-p 将缩小的 png 转换为 data-URL

      let mapBG = document.querySelector("#mapBG");
      let src = mapBG.src;
      
      function addMapMarkers() {
        let markers = document.querySelectorAll("#markers circle");
        let animationDelay = 0;
        markers.forEach(function(el, i) {
          el.classList.add("marker-animation");
          el.setAttribute("style", "animation-delay:" + animationDelay + "s");
          animationDelay += 0.01;
        });
      }
      checkMapLoad(mapBG);
      async function checkMapLoad(img) {
        // Wait for the img src to load.
        await new Promise((resolve) => {
          img.onload = resolve;
        });
        // src is loaded but let's add some extra delay for rendering
        console.log("map is loaded");
        img.classList.add("mapFadeIn");
        setTimeout(function() {
          addMapMarkers();
        }, 500);
      }
      body {
        margin: 0;
      }
      
      #map {
        background: radial-gradient( circle, rgba(77, 75, 75, 1) 0%, rgba(47, 47, 47, 1) 100%);
        padding: 50px;
      }
      
      .container {
        position: relative;
      }
      
      .mapBG {
        width: 100%;
        height: auto;
        position: absolute;
        top: 0;
        left: 0;
        opacity: 0.1;
      }
      
      .mapFadeIn {
        animation: fadeIn 1s forwards;
      }
      
      .marker {
        fill: #4ca7fc;
        stroke: rgba(255, 255, 255, 0.5);
        stroke-width: 1;
        filter: drop-shadow(0px 0px 1px rgba(255, 255, 255, 0.3));
        opacity: 0;
      }
      
      .marker-animation {
        animation-name: enter;
        animation-duration: 1s;
        animation-timing-function: ease-out;
        animation-iteration-count: 1;
        animation-direction: normal;
        animation-fill-mode: forwards;
      }
      
      @keyframes fadeIn {
        to {
          opacity: 0.1;
        }
      }
      
      @keyframes enter {
        0% {
          opacity: 0;
        }
        100% {
          opacity: 1;
        }
      }
      <div id="map" class="mapWrap">
        <div class="container">
          <img id="mapBG" class="mapBG" src='data:image/png;base64,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'
            data-srcset="map_480px.png 480w, map_640px.png 640w, map_vector.svg 2400w" alt="map">
      
          <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 1300  711 ">
            <g id="markers" class="markers">
              <circle cx="172.0056" cy="281.1911" r="3" class="marker" />
              <circle cx="1093.0056" cy="281.1911" r="3" class="marker" />
              <circle cx="670.0056" cy="247.1911" r="3" class="marker" />
              <circle cx="598.0056" cy="229.1911" r="3" class="marker" />
              <circle cx="586.0056" cy="285.1911" r="3" class="marker" />
              <circle cx="169.0056" cy="264.1911" r="3" class="marker" />
              <circle cx="1090.0056" cy="264.1911" r="3" class="marker" />
              <circle cx="855.0056" cy="347.1911" r="3" class="marker" />
              <circle cx="667.0056" cy="230.1911" r="3" class="marker" />
              <circle cx="595.0056" cy="212.1911" r="3" class="marker" />
              <circle cx="219.0056" cy="335.1911" r="3" class="marker" />
              <circle cx="1087.0056" cy="318.1911" r="3" class="marker" />
              <circle cx="905.0056" cy="418.1911" r="3" class="marker" />
              <circle cx="717.0056" cy="301.1911" r="3" class="marker" />
              <circle cx="607.0056" cy="280.1911" r="3" class="marker" />
              <circle cx="178.0056" cy="297.1911" r="3" class="marker" />
              <circle cx="1099.0056" cy="297.1911" r="3" class="marker" />
              <circle cx="676.0056" cy="263.1911" r="3" class="marker" />
              <circle cx="604.0056" cy="245.1911" r="3" class="marker" />
              <circle cx="228.0056" cy="368.1911" r="3" class="marker" />
              <circle cx="202.0056" cy="297.1911" r="3" class="marker" />
              <circle cx="1123.0056" cy="297.1911" r="3" class="marker" />
              <circle cx="888.0056" cy="380.1911" r="3" class="marker" />
              <circle cx="700.0056" cy="263.1911" r="3" class="marker" />
              <circle cx="628.0056" cy="245.1911" r="3" class="marker" />
              <circle cx="252.0056" cy="368.1911" r="3" class="marker" />
              <circle cx="313.0056" cy="306.1911" r="3" class="marker" />
              <circle cx="263.0056" cy="302.1911" r="3" class="marker" />
              <circle cx="260.0056" cy="291.1911" r="3" class="marker" />
              <circle cx="269.0056" cy="309.1911" r="3" class="marker" />
              <circle cx="277.0056" cy="288.1911" r="3" class="marker" />
              <circle cx="292.0056" cy="303.1911" r="3" class="marker" />
              <circle cx="280.0056" cy="295.1911" r="3" class="marker" />
              <circle cx="293.0056" cy="279.1911" r="3" class="marker" />
              <circle cx="280.0056" cy="295.1911" r="3" class="marker" />
              <circle cx="328.0056" cy="292.1911" r="3" class="marker" />
              <circle cx="331.0056" cy="278.1911" r="3" class="marker" />
              <circle cx="325.0056" cy="271.1911" r="3" class="marker" />
              <circle cx="169.0056" cy="289.1911" r="3" class="marker" />
              <circle cx="1108.0056" cy="302.1911" r="3" class="marker" />
              <circle cx="667.0056" cy="255.1911" r="3" class="marker" />
              <circle cx="595.0056" cy="237.1911" r="3" class="marker" />
              <circle cx="219.0056" cy="360.1911" r="3" class="marker" />
              <circle cx="583.0056" cy="293.1911" r="3" class="marker" />
              <circle cx="166.0056" cy="272.1911" r="3" class="marker" />
              <circle cx="1087.0056" cy="272.1911" r="3" class="marker" />
              <circle cx="664.0056" cy="238.1911" r="3" class="marker" />
              <circle cx="592.0056" cy="220.1911" r="3" class="marker" />
              <circle cx="157.0056" cy="270.1911" r="3" class="marker" />
              <circle cx="1039.0056" cy="254.1911" r="3" class="marker" />
              <circle cx="655.0056" cy="236.1911" r="3" class="marker" />
              <circle cx="583.0056" cy="218.1911" r="3" class="marker" />
              <circle cx="216.0056" cy="343.1911" r="3" class="marker" />
              <circle cx="1084.0056" cy="328.1911" r="3" class="marker" />
              <circle cx="1088.0056" cy="519.1911" r="3" class="marker" />
              <circle cx="1051.0056" cy="417.1911" r="3" class="marker" />
              <circle cx="991.0056" cy="414.1911" r="3" class="marker" />
              <circle cx="1024.0056" cy="464.1911" r="3" class="marker" />
              <circle cx="1239.0056" cy="619.1911" r="3" class="marker" />
              <circle cx="1242.0056" cy="634.1911" r="3" class="marker" />
              <circle cx="1135.0056" cy="640.1911" r="3" class="marker" />
              <circle cx="1107.0056" cy="599.1911" r="3" class="marker" />
              <circle cx="1158.0056" cy="579.1911" r="3" class="marker" />
              <circle cx="1164.0056" cy="410.1911" r="3" class="marker" />
              <circle cx="1152.0056" cy="608.1911" r="3" class="marker" />
              <circle cx="1134.0056" cy="625.1911" r="3" class="marker" />
              <circle cx="902.0056" cy="426.1911" r="3" class="marker" />
              <circle cx="714.0056" cy="309.1911" r="3" class="marker" />
              <circle cx="377.0056" cy="525.1911" r="3" class="marker" />
              <circle cx="371.0056" cy="513.1911" r="3" class="marker" />
              <circle cx="334.0056" cy="485.1911" r="3" class="marker" />
              <circle cx="359.0056" cy="582.1911" r="3" class="marker" />
              <circle cx="396.0056" cy="599.1911" r="3" class="marker" />
              <circle cx="407.0056" cy="599.1911" r="3" class="marker" />
              <circle cx="606.0056" cy="417.1911" r="3" class="marker" />
              <circle cx="673.0056" cy="531.1911" r="3" class="marker" />
              <circle cx="697.0056" cy="487.1911" r="3" class="marker" />
              <circle cx="745.0056" cy="470.1911" r="3" class="marker" />
              <circle cx="681.0056" cy="596.1911" r="3" class="marker" />
              <circle cx="589.0056" cy="279.1911" r="3" class="marker" />
              <circle cx="175.0056" cy="305.1911" r="3" class="marker" />
              <circle cx="1096.0056" cy="305.1911" r="3" class="marker" />
              <circle cx="649.0056" cy="256.1911" r="3" class="marker" />
              <circle cx="601.0056" cy="253.1911" r="3" class="marker" />
              <circle cx="225.0056" cy="376.1911" r="3" class="marker" />
              <circle cx="163.0056" cy="293.1911" r="3" class="marker" />
              <circle cx="1088.0056" cy="308.1911" r="3" class="marker" />
              <circle cx="661.0056" cy="259.1911" r="3" class="marker" />
              <circle cx="589.0056" cy="241.1911" r="3" class="marker" />
              <circle cx="213.0056" cy="364.1911" r="3" class="marker" />
              <circle cx="169.0056" cy="301.1911" r="3" class="marker" />
              <circle cx="1090.0056" cy="301.1911" r="3" class="marker" />
              <circle cx="667.0056" cy="267.1911" r="3" class="marker" />
              <circle cx="595.0056" cy="249.1911" r="3" class="marker" />
              <circle cx="219.0056" cy="372.1911" r="3" class="marker" />
              <circle cx="199.0056" cy="305.1911" r="3" class="marker" />
              <circle cx="1120.0056" cy="305.1911" r="3" class="marker" />
              <circle cx="885.0056" cy="388.1911" r="3" class="marker" />
              <circle cx="697.0056" cy="271.1911" r="3" class="marker" />
              <circle cx="625.0056" cy="253.1911" r="3" class="marker" />
              <circle cx="249.0056" cy="376.1911" r="3" class="marker" />
              <circle cx="310.0056" cy="314.1911" r="3" class="marker" />
              <circle cx="301.0056" cy="304.1911" r="3" class="marker" />
              <circle cx="295.0056" cy="327.1911" r="3" class="marker" />
              <circle cx="307.0056" cy="345.1911" r="3" class="marker" />
              <circle cx="263.0056" cy="336.1911" r="3" class="marker" />
              <circle cx="217.0056" cy="324.1911" r="3" class="marker" />
              <circle cx="1033.0056" cy="330.1911" r="3" class="marker" />
              <circle cx="903.0056" cy="407.1911" r="3" class="marker" />
              <circle cx="715.0056" cy="290.1911" r="3" class="marker" />
              <circle cx="643.0056" cy="272.1911" r="3" class="marker" />
              <circle cx="193.0056" cy="314.1911" r="3" class="marker" />
              <circle cx="1101.0056" cy="313.1911" r="3" class="marker" />
              <circle cx="879.0056" cy="397.1911" r="3" class="marker" />
              <circle cx="691.0056" cy="280.1911" r="3" class="marker" />
              <circle cx="619.0056" cy="262.1911" r="3" class="marker" />
              <circle cx="243.0056" cy="385.1911" r="3" class="marker" />
              <circle cx="190.0056" cy="293.1911" r="3" class="marker" />
              <circle cx="1111.0056" cy="293.1911" r="3" class="marker" />
              <circle cx="688.0056" cy="259.1911" r="3" class="marker" />
              <circle cx="616.0056" cy="241.1911" r="3" class="marker" />
              <circle cx="240.0056" cy="364.1911" r="3" class="marker" />
              <circle cx="181.0056" cy="271.1911" r="3" class="marker" />
              <circle cx="1102.0056" cy="271.1911" r="3" class="marker" />
              <circle cx="867.0056" cy="354.1911" r="3" class="marker" />
              <circle cx="679.0056" cy="237.1911" r="3" class="marker" />
              <circle cx="607.0056" cy="219.1911" r="3" class="marker" />
              <circle cx="231.0056" cy="342.1911" r="3" class="marker" />
              <circle cx="169.0056" cy="252.1911" r="3" class="marker" />
              <circle cx="1090.0056" cy="252.1911" r="3" class="marker" />
              <circle cx="667.0056" cy="218.1911" r="3" class="marker" />
              <circle cx="595.0056" cy="200.1911" r="3" class="marker" />
              <circle cx="219.0056" cy="323.1911" r="3" class="marker" />
              <circle cx="1030.0056" cy="316.1911" r="3" class="marker" />
              <circle cx="905.0056" cy="406.1911" r="3" class="marker" />
              <circle cx="717.0056" cy="289.1911" r="3" class="marker" />
              <circle cx="645.0056" cy="271.1911" r="3" class="marker" />
              <circle cx="220.0056" cy="226.1911" r="3" class="marker" />
              <circle cx="646.0056" cy="174.1911" r="3" class="marker" />
              <circle cx="295.0056" cy="241.1911" r="3" class="marker" />
              <circle cx="325.0056" cy="300.1911" r="3" class="marker" />
              <circle cx="316.0056" cy="298.1911" r="3" class="marker" />
              <circle cx="393.0056" cy="402.1911" r="3" class="marker" />
              <circle cx="349.0056" cy="383.1911" r="3" class="marker" />
              <circle cx="340.0056" cy="383.1911" r="3" class="marker" />
              <circle cx="337.0056" cy="376.1911" r="3" class="marker" />
              <circle cx="323.0056" cy="375.1911" r="3" class="marker" />
              <circle cx="390.0056" cy="390.1911" r="3" class="marker" />
              <circle cx="390.0056" cy="386.1911" r="3" class="marker" />
              <circle cx="390.0056" cy="383.6911" r="3" class="marker" />
              <circle cx="390.0056" cy="383.6911" r="3" class="marker" />
              <circle cx="322.0056" cy="284.1911" r="3" class="marker" />
              <circle cx="181.0056" cy="284.1911" r="3" class="marker" />
              <circle cx="1082.0056" cy="282.1911" r="3" class="marker" />
              <circle cx="867.0056" cy="367.1911" r="3" class="marker" />
              <circle cx="679.0056" cy="250.1911" r="3" class="marker" />
              <circle cx="607.0056" cy="232.1911" r="3" class="marker" />
              <circle cx="231.0056" cy="355.1911" r="3" class="marker" />
              <circle cx="178.0056" cy="267.1911" r="3" class="marker" />
              <circle cx="1099.0056" cy="267.1911" r="3" class="marker" />
              <circle cx="676.0056" cy="233.1911" r="3" class="marker" />
              <circle cx="604.0056" cy="215.1911" r="3" class="marker" />
              <circle cx="228.0056" cy="338.1911" r="3" class="marker" />
              <circle cx="187.0056" cy="300.1911" r="3" class="marker" />
              <circle cx="1108.0056" cy="300.1911" r="3" class="marker" />
              <circle cx="685.0056" cy="266.1911" r="3" class="marker" />
              <circle cx="613.0056" cy="248.1911" r="3" class="marker" />
              <circle cx="237.0056" cy="371.1911" r="3" class="marker" />
              <circle cx="211.0056" cy="300.1911" r="3" class="marker" />
              <circle cx="1132.0056" cy="300.1911" r="3" class="marker" />
              <circle cx="930.0056" cy="371.1911" r="3" class="marker" />
              <circle cx="709.0056" cy="266.1911" r="3" class="marker" />
              <circle cx="637.0056" cy="248.1911" r="3" class="marker" />
              <circle cx="647.0056" cy="242.1911" r="3" class="marker" />
              <circle cx="193.0056" cy="284.1911" r="3" class="marker" />
              <circle cx="1126.0056" cy="287.1911" r="3" class="marker" />
              <circle cx="691.0056" cy="250.1911" r="3" class="marker" />
              <circle cx="619.0056" cy="232.1911" r="3" class="marker" />
              <circle cx="322.0056" cy="309.1911" r="3" class="marker" />
              <circle cx="307.0056" cy="322.1911" r="3" class="marker" />
              <circle cx="319.0056" cy="340.1911" r="3" class="marker" />
              <circle cx="313.0056" cy="334.1911" r="3" class="marker" />
              <circle cx="349.0056" cy="420.1911" r="3" class="marker" />
              <circle cx="328.0056" cy="420.1911" r="3" class="marker" />
              <circle cx="334.0056" cy="432.1911" r="3" class="marker" />
              <circle cx="275.0056" cy="331.1911" r="3" class="marker" />
              <circle cx="229.0056" cy="319.1911" r="3" class="marker" />
              <circle cx="205.0056" cy="309.1911" r="3" class="marker" />
              <circle cx="1111.0056" cy="307.1937" r="3" class="marker" />
              <circle cx="891.0056" cy="392.1911" r="3" class="marker" />
              <circle cx="703.0056" cy="275.1911" r="3" class="marker" />
              <circle cx="631.0056" cy="257.1911" r="3" class="marker" />
              <circle cx="202.0056" cy="288.1911" r="3" class="marker" />
              <circle cx="1123.0056" cy="288.1911" r="3" class="marker" />
              <circle cx="888.0056" cy="371.1911" r="3" class="marker" />
              <circle cx="700.0056" cy="254.1911" r="3" class="marker" />
              <circle cx="628.0056" cy="236.1911" r="3" class="marker" />
              <circle cx="252.0056" cy="359.1911" r="3" class="marker" />
              <circle cx="193.0056" cy="266.1911" r="3" class="marker" />
              <circle cx="1120.0056" cy="279.1911" r="3" class="marker" />
              <circle cx="691.0056" cy="232.1911" r="3" class="marker" />
              <circle cx="619.0056" cy="214.1911" r="3" class="marker" />
              <circle cx="243.0056" cy="337.1911" r="3" class="marker" />
              <circle cx="181.0056" cy="247.1911" r="3" class="marker" />
              <circle cx="1137.0056" cy="283.1911" r="3" class="marker" />
              <circle cx="679.0056" cy="213.1911" r="3" class="marker" />
              <circle cx="607.0056" cy="195.1911" r="3" class="marker" />
              <circle cx="232.0056" cy="221.1911" r="3" class="marker" />
              <circle cx="307.0056" cy="236.1911" r="3" class="marker" />
              <circle cx="337.0056" cy="295.1911" r="3" class="marker" />
              <circle cx="340.0056" cy="281.1911" r="3" class="marker" />
              <circle cx="349.0056" cy="270.1911" r="3" class="marker" />
              <circle cx="340.0056" cy="269.1911" r="3" class="marker" />
              <circle cx="346.0056" cy="264.1911" r="3" class="marker" />
              <circle cx="346.0056" cy="275.1911" r="3" class="marker" />
              <circle cx="349.0056" cy="269.1911" r="3" class="marker" />
              <circle cx="413.0056" cy="249.1911" r="3" class="marker" />
              <circle cx="343.0056" cy="246.1911" r="3" class="marker" />
              <circle cx="334.0056" cy="223.1911" r="3" class="marker" />
              <circle cx="178.0056" cy="292.1911" r="3" class="marker" />
              <circle cx="1099.0056" cy="292.1911" r="3" class="marker" />
              <circle cx="703.0056" cy="245.1911" r="3" class="marker" />
              <circle cx="676.0056" cy="258.1911" r="3" class="marker" />
              <circle cx="604.0056" cy="240.1911" r="3" class="marker" />
              <circle cx="228.0056" cy="363.1911" r="3" class="marker" />
              <circle cx="175.0056" cy="275.1911" r="3" class="marker" />
              <circle cx="1105.0056" cy="296.1911" r="3" class="marker" />
              <circle cx="673.0056" cy="241.1911" r="3" class="marker" />
              <circle cx="601.0056" cy="223.1911" r="3" class="marker" />
              <circle cx="225.0056" cy="346.1911" r="3" class="marker" />
              <circle cx="603.0056" cy="288.1911" r="3" class="marker" />
              <circle cx="184.0056" cy="308.1911" r="3" class="marker" />
              <circle cx="1064.0056" cy="297.1911" r="3" class="marker" />
              <circle cx="976.0056" cy="387.1911" r="3" class="marker" />
              <circle cx="994.0056" cy="487.1911" r="3" class="marker" />
              <circle cx="1030.0056" cy="605.1911" r="3" class="marker" />
              <circle cx="682.0056" cy="274.1911" r="3" class="marker" />
              <circle cx="610.0056" cy="256.1911" r="3" class="marker" />
              <circle cx="234.0056" cy="379.1911" r="3" class="marker" />
              <circle cx="208.0056" cy="308.1911" r="3" class="marker" />
              <circle cx="1094.0056" cy="309.1911" r="3" class="marker" />
              <circle cx="922.0056" cy="371.1911" r="3" class="marker" />
              <circle cx="706.0056" cy="274.1911" r="3" class="marker" />
              <circle cx="634.0056" cy="256.1911" r="3" class="marker" />
              <circle cx="646.0056" cy="262.1911" r="3" class="marker" />
              <circle cx="199.0056" cy="317.1911" r="3" class="marker" />
              <circle cx="1033.0056" cy="302.1911" r="3" class="marker" />
              <circle cx="885.0056" cy="400.1911" r="3" class="marker" />
              <circle cx="697.0056" cy="283.1911" r="3" class="marker" />
              <circle cx="625.0056" cy="265.1911" r="3" class="marker" />
              <circle cx="319.0056" cy="317.1911" r="3" class="marker" />
              <circle cx="317.0056" cy="317.1911" r="3" class="marker" />
              <circle cx="319.0056" cy="309.1911" r="3" class="marker" />
              <circle cx="315.0056" cy="306.1911" r="3" class="marker" />
              <circle cx="319.0056" cy="314.1911" r="3" class="marker" />
              <circle cx="365.0056" cy="423.1911" r="3" class="marker" />
              <circle cx="343.0056" cy="438.1911" r="3" class="marker" />
              <circle cx="331.0056" cy="441.1911" r="3" class="marker" />
              <circle cx="304.0056" cy="330.1911" r="3" class="marker" />
              <circle cx="316.0056" cy="348.1911" r="3" class="marker" />
              <circle cx="312.0056" cy="342.1911" r="3" class="marker" />
              <circle cx="281.0056" cy="382.1911" r="3" class="marker" />
              <circle cx="295.0056" cy="369.1911" r="3" class="marker" />
              <circle cx="286.0056" cy="370.1911" r="3" class="marker" />
              <circle cx="292.0056" cy="393.1911" r="3" class="marker" />
              <circle cx="310.0056" cy="408.1911" r="3" class="marker" />
              <circle cx="304.0056" cy="414.1911" r="3" class="marker" />
              <circle cx="272.0056" cy="339.1911" r="3" class="marker" />
              <circle cx="238.0056" cy="377.1911" r="3" class="marker" />
              <circle cx="226.0056" cy="327.1911" r="3" class="marker" />
              <circle cx="652.0056" cy="275.1911" r="3" class="marker" />
              <circle cx="202.0056" cy="317.1911" r="3" class="marker" />
              <circle cx="1036.0056" cy="340.1911" r="3" class="marker" />
              <circle cx="962.0056" cy="374.1911" r="3" class="marker" />
              <circle cx="888.0056" cy="400.1911" r="3" class="marker" />
              <circle cx="700.0056" cy="283.1911" r="3" class="marker" />
              <circle cx="628.0056" cy="265.1911" r="3" class="marker" />
              <circle cx="252.0056" cy="388.1911" r="3" class="marker" />
              <circle cx="199.0056" cy="296.1911" r="3" class="marker" />
              <circle cx="1120.0056" cy="296.1911" r="3" class="marker" />
              <circle cx="885.0056" cy="379.1911" r="3" class="marker" />
              <circle cx="697.0056" cy="262.1911" r="3" class="marker" />
              <circle cx="625.0056" cy="244.1911" r="3" class="marker" />
              <circle cx="672.0056" cy="194.1911" r="3" class="marker" />
              <circle cx="675.0056" cy="197.1911" r="3" class="marker" />
              <circle cx="249.0056" cy="367.1911" r="3" class="marker" />
              <circle cx="190.0056" cy="274.1911" r="3" class="marker" />
              <circle cx="1120.0056" cy="288.1911" r="3" class="marker" />
              <circle cx="688.0056" cy="240.1911" r="3" class="marker" />
              <circle cx="616.0056" cy="222.1911" r="3" class="marker" />
              <circle cx="240.0056" cy="345.1911" r="3" class="marker" />
              <circle cx="178.0056" cy="255.1911" r="3" class="marker" />
              <circle cx="1099.0056" cy="255.1911" r="3" class="marker" />
              <circle cx="676.0056" cy="221.1911" r="3" class="marker" />
              <circle cx="604.0056" cy="203.1911" r="3" class="marker" />
              <circle cx="163.0056" cy="256.1911" r="3" class="marker" />
              <circle cx="1084.0056" cy="256.1911" r="3" class="marker" />
              <circle cx="661.0056" cy="222.1911" r="3" class="marker" />
              <circle cx="589.0056" cy="204.1911" r="3" class="marker" />
              <circle cx="228.0056" cy="326.1911" r="3" class="marker" />
              <circle cx="229.0056" cy="229.1911" r="3" class="marker" />
              <circle cx="304.0056" cy="244.1911" r="3" class="marker" />
              <circle cx="334.0056" cy="303.1911" r="3" class="marker" />
              <circle cx="328.0056" cy="308.1911" r="3" class="marker" />
              <circle cx="322.0056" cy="308.1911" r="3" class="marker" />
              <circle cx="334.0056" cy="304.1911" r="3" class="marker" />
              <circle cx="328.0056" cy="301.1911" r="3" class="marker" />
              <circle cx="316.0056" cy="298.1911" r="3" class="marker" />
              <circle cx="304.0056" cy="288.1911" r="3" class="marker" />
              <circle cx="292.0056" cy="283.1911" r="3" class="marker" />
              <circle cx="274.0056" cy="268.1911" r="3" class="marker" />
              <circle cx="289.0056" cy="293.1911" r="3" class="marker" />
              <circle cx="290.0056" cy="269.1911" r="3" class="marker" />
              <circle cx="334.0056" cy="287.1911" r="3" class="marker" />
              <circle cx="316.0056" cy="290.1911" r="3" class="marker" />
              <circle cx="284.0056" cy="281.1911" r="3" class="marker" />
              <circle cx="68.0056" cy="145.1911" r="3" class="marker" />
              <circle cx="38.0056" cy="165.1911" r="3" class="marker" />
              <circle cx="78.0056" cy="175.1911" r="3" class="marker" />
            </g>
          </svg>
        </div>
      </div>

      【讨论】:

        猜你喜欢
        • 2014-03-13
        • 1970-01-01
        • 2017-02-28
        • 2020-06-16
        • 1970-01-01
        • 2020-11-25
        • 2019-10-13
        • 2012-12-08
        • 1970-01-01
        相关资源
        最近更新 更多