【问题标题】:how to show large zoom scroll in google map api如何在谷歌地图api中显示大缩放滚动
【发布时间】:2017-01-24 21:50:00
【问题描述】:

我必须显示以前版本的 google map api (v3.21) 中可用的大缩放滑块选项。我已经在脚本的 src 中指定了版本,但它不起作用。以下是我的代码:

html, body {
  height: 100%;
  margin: 0;
}
<div id="googleMap" style="height: 100%;width: 1349px;"></div>
<script type="text/javascript">
  var map;
  function initialize() {
    map = new google.maps.Map(document.getElementById('googleMap'), {
      center: {lat: -34.397, lng: 150.644},
      zoom: 2,
      streetViewControl: false,
      panControl: true,
      panControlOptions: {
        position: google.maps.ControlPosition.RIGHT_TOP
      },
      zoomControl: true,
      zoomControlOptions: {
        style: google.maps.ZoomControlStyle.LARGE,
        position: google.maps.ControlPosition.RIGHT_TOP
      },
    });
  }
</script>
<script src="https://maps.googleapis.com/maps/api/js?callback=initialize&v=3.21&signed_in=true"></script>

【问题讨论】:

    标签: javascript google-maps google-maps-api-3


    【解决方案1】:

    “旧”平移和缩放控件已被删除。如果您仍然需要该功能,则需要创建自己的自定义控件来实现它。

    相关问题(包括自定义平移/缩放控件的示例):

    【讨论】:

      【解决方案2】:

      缩放控件现在只是一个“+”和“-”按钮 - 不再有 一个滑块。缩放控件的默认位置已从 TOP_LEFT 到 RIGHT_BOTTOM

      了解更多检查

      缩放控制

      在此链接中屏蔽What's New in the v3.22 Map Controls

      【讨论】:

      • 我知道它已被贬低,但我已经指定了允许我使用该版本属性的版本。
      • 版本 3.21 已停用,不再可用。
      • 做一件事删除 signed_in=true 看看会发生什么。
      【解决方案3】:

      我为 IE11 开发了一个缩放滑块。它也适用于 Chrome 和 Mozilla,更新 css 属性。

      https://github.com/bubango/zoom_slider_IE11

      【讨论】:

        【解决方案4】:

        不确定您是否还在寻找缩放滑块,但我最近做了一个,也许您或其他任何人都可以使用它。

        创建缩放构造函数...

        function ZoomControl(controlDiv, map, min, max, currentZoom) {
        
          var controlUI = document.createElement('input');
          controlUI.type = 'range';
          controlUI.value = currentZoom;
          controlUI.min = min;
          controlUI.max = max;
          controlUI.style.position = "fixed";
          controlUI.style.top = "95%";
          controlUI.style.left = "50%";
          controlUI.style.transform = "translate(-50%, -50%)";
          controlUI.style.width = "400px";
          controlDiv.appendChild(controlUI);
          controlUI.addEventListener('click', function() {
            map.setZoom(parseFloat(controlUI.value));
          });
        
          google.maps.event.addListener(map, 'zoom_changed', function(){
              controlUI.value = map.getZoom();
          });
        
        }
        

        并在您创建地图时使用它。

        function initMap() {
        
            //initial map options
            var options = {
                center: startLatLng,
                zoom: 3,
                minZoom: 3,
                maxZoom: 15,
                streetViewControl: false,
                mapTypeId: google.maps.MapTypeId.TERRAIN,
                disableDefaultUI: true
                }
        
            map = new google.maps.Map(id('map'), options);
        
            var centerControlDiv = document.createElement('div');
            var centerControl = new ZoomControl(centerControlDiv, map, options.minZoom, options.maxZoom, options.zoom);
        
            centerControlDiv.index = 1;
            map.controls[google.maps.ControlPosition.BOTTOM_CENTER].push(centerControlDiv);
        
        }
        

        您的结果将有一个看起来像所附图像的滑块。

        【讨论】:

        • 请问我必须使用什么 CSS 来创建这种风格的拇指滑块?上面的代码只是产生了一个黑色方块!
        • @Archdeacon 没有花哨的 CSS。我通过在函数 ZoomControl 中附加样式来使用性能不佳的 javascript。您可以使用这些样式创建一个类,并通过 JS 一次附加所有样式。你可以在这里看到这个滑块的工作版本,没有谷歌地图:codepen.io/Fallenstedt/pen/vgJbYd
        • 我最终在这里使用了代码 - brennaobrien.com/blog/2014/05/…
        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2015-09-28
        • 2018-01-23
        • 1970-01-01
        • 2023-04-09
        • 2023-03-27
        • 1970-01-01
        • 2012-06-25
        相关资源
        最近更新 更多