Отключить масштабирование прокрутки в mapbox

#javascript #mapbox

#javascript #mapbox

Вопрос:

Я пытаюсь отключить масштабирование прокрутки на карте mapbox, но это не работает. Может кто-нибудь сообщить мне, что не так с моим кодом? Ошибка, которую я получаю, — «Неперехваченная ошибка типа: не удается прочитать свойство ‘disable’ неопределенного»

 <script>
    L.mapbox.accessToken = 'pk.token';
    var map = L.mapbox.map('map', 'mapbox.streets', {
        legendControl: {
            position: 'topright'
        }
    })
        .setView([56.3, 11.5], 7);

      var popup = new L.Popup({ autoPan: false });

      // statesData comes from the 'us-states.js' script included above
      var statesLayer = L.geoJson(statesData,  {
          style: getStyle,
          onEachFeature: onEachFeature
      }).addTo(map);

      function getStyle(feature) {
          return {
              weight: 2,
              opacity: 0.1,
              color: 'black',
              fillOpacity: 0.7,
              fillColor: getColor(feature.properties.density)
          };
      }

      // get color depending on population density value
      function getColor(d) {
          return d > 1000 ? '#512b00' :
              d > 500 ? '#8E4C01' :
              d > 200  ? '#cc4c02' :
              d > 100  ? '#ec7014' :
              d > 50   ? '#fe9929' :
              d > 20   ? '#fec44f' :
              d > 10   ? '#fee391' :
              d > 5    ? '#fff7bc' :
              '#ffffe5';
      }

      function onEachFeature(feature, layer) {
          layer.on({
              mousemove: mousemove,
              mouseout: mouseout,
              click: zoomToFeature
          });
      }

      var closeTooltip;

      function mousemove(e) {
          var layer = e.target;

          popup.setLatLng(e.latlng);
          popup.setContent('<div class="marker-title">'   layer.feature.properties.name   '</div>'  
              layer.feature.properties.density   ' feriehuse');

          if (!popup._map) popup.openOn(map);
          window.clearTimeout(closeTooltip);

          // highlight feature
          layer.setStyle({
              weight: 3,
              opacity: 0.3,
              fillOpacity: 0.9
          });

          if (!L.Browser.ie amp;amp; !L.Browser.opera) {
              layer.bringToFront();
          }
      }

      function mouseout(e) {
          statesLayer.resetStyle(e.target);
          closeTooltip = window.setTimeout(function() {
              map.closePopup();
          }, 100);
      }

      function zoomToFeature(e) {
          map.fitBounds(e.target.getBounds());
      }

      map.legendControl.addLegend(getLegendHTML());

      function getLegendHTML() {
        var grades = [0, 5, 10, 20, 50, 100, 200, 500, 1000],
        labels = [],
        from, to;

        for (var i = 0; i < grades.length; i  ) {
          from = grades[i];
          to = grades[i   1];

          labels.push(
            '<li><span class="swatch" style="background:'   getColor(from   1)   '"></span> '  
            from   (to ? 'amp;ndash;'   to : ' '))   '</li>';
        }

        return '<span>Antal feriehuse</span><ul>'   labels.join('')   '</ul>';
      }

      // disable map zoom when using scroll
      map.scrollZoom.disable();
    </script>
  

Ответ №1:

Это mapbox.js / карта листовки, а не mapbox-gl-js, так что разница в том, что в листовке элемент управления масштабированием прокрутки scrollWheelZoom не вызывается scrollZoom . Если вы замените последнюю строку вашего скрипта следующей, она должна работать. http://jsfiddle.net/x5j669zj /

 if (map.scrollWheelZoom) {
  map.scrollWheelZoom.disable();
}