【问题标题】:How to make SVG map zoomable and scrollable?如何使 SVG 地图可缩放和可滚动?
【发布时间】:2021-04-30 15:43:14
【问题描述】:

我正在开发一个主页上带有自定义 SVG 地图的网站。

我已经创建了一个带有交互点(通常的链接标签)的地图,效果很好。但这里的问题是地图很大,需要大于屏幕尺寸,尤其是在小型设备上。

我希望地图可以缩放(不缩放所有页面)并且可以通过拖动鼠标滚动(在桌面上),并且默认情况下它需要居中。

我尝试使用JqueryUI的可拖动方法来实现滚动,并且它可以工作,但是与我用来居中的方法有某种冲突。当我尝试限制可拖动区域时,也绝对卡住了。

这是我的最新示例:https://codepen.io/khomutovspace/pen/jOVzbMe

代码:

$(document).ready(function () {
  var outerContent = $(".map");
  var innerContent = $(".map > svg");

  outerContent.scrollTop((innerContent.height() - outerContent.height()) / 2);
});

$(function () {
  $(".map").draggable();
});
body {
  margin: 0;
}

.content {
  position: fixed;
  top: 0;
  left: 0;
  z-index: 1;
  padding: 15px;
}

.navigation {
  display: grid;
  grid-template-columns: repeat(2, 1fr);
}

.map {
  min-width: 100vw;
  min-height: 100vh;
  overflow: hidden;
}
<script src="https://code.jquery.com/ui/1.12.1/jquery-ui.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<div class="content">
  <div class="navigation">
    <div>
      <a>Title</a>
    </div>
    <div>
      <a>Item 1</a>
      <a>Item 2</a>
      <a>Item 3</a>
    </div>
  </div>
</div>
<div class="map">
  <svg>…
</div>

【问题讨论】:

    标签: javascript html jquery css svg


    【解决方案1】:

    如果你可以使用 jQuery UI 以外的其他库,你可以试试PanZoom

      const mapElement = $(".map .svg")[0];
      const panzoom = Panzoom(mapElement, { contain: 'outside', startScale: 1.5 });
      
      mapElement.parentElement.addEventListener('wheel', panzoom.zoomWithWheel);
      mapElement.parentElement.addEventListener('wheel', function (event) {
        if (!event.shiftKey) return;
        panzoom.zoomWithWheel(event);
      })
    

    例如:https://codepen.io/adrienlamotte/pen/bGgPgqj

    【讨论】:

    • 无法检查它可以提供的所有功能,但我真的很喜欢你固定的新钢笔示例。非常感谢您的建议!
    • 我试过了。喜欢功能。但是有一些问题。问题是它总是试图把地图放在左边或底部,它的大小没有意义。所以也许有办法让它居中?如果可以的话,也许我可以联系你?
    • 我想要实现的目标是一个具有 100%(页面的)宽度和高度的容器。并且地图本身就在中心,能够在不改变父容器特征的情况下进行缩放和平移。
    猜你喜欢
    • 2020-05-14
    • 2016-03-23
    • 1970-01-01
    • 1970-01-01
    • 2023-03-10
    • 2013-11-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多