代码之家  ›  专栏  ›  技术社区  ›  Aderbal Nunes

OpenLayers 3矢量缩放位置错误

  •  3
  • Aderbal Nunes  · 技术社区  · 9 年前

    我尝试使用OpenLayers 3在地图上绘制一个矢量图像。当在地图上使用缩放时,图像的行为很奇怪。为了证明这一点,做了一个jsffidle: http://jsfiddle.net/aderbas/8kpoqoow/

     var iconStyle = new ol.style.Style({
            image: new ol.style.Icon(/** @type {olx.style.IconOptions} */ ({
            opacity: 0.75,
            src: '//cdn4.iconfinder.com/data/icons/pictype-free-vector-icons/16/location-alt-32.png'
          }))
        });
    

    只需使用放大/缩小即可实现。有人知道为什么吗?

    1 回复  |  直到 8 年前
        1
  •  5
  •   kryger    8 年前

    你没有弄清楚你所说的“行为奇怪”是什么意思,但我想这是关于放大和缩小后标记“浮动”的。这是因为您使用的是一个顶端位于底部的自定义标记图像,但默认情况下OpenLayers会将图标的中心设置在中间(因为它无法推断“尖”侧的位置)。

    通过定义锚点可以轻松解决此问题。有多种方法可以 specify where the anchor should be ,使用 anchor 在这种情况下可能是最直接的:

    var iconStyle = new ol.style.Style({
        image: new ol.style.Icon(/** @type {olx.style.IconOptions} */ ({
        opacity: 0.75,
    
        anchor: [0.5, 1], // middle on the X axis, bottom on the Y axis
    
        src: '//cdn4.iconfinder.com/data/icons/pictype-free-vector-icons/16/location-alt-32.png'
      }))
    });
    

    这是您更新的JSFiddle,它显示了定义了锚的新行为: http://jsfiddle.net/kryger/hv8w4o3u/2/