Search code examples
javascriptangularjsleafletangular-leaflet-directive

Leaflet map keeps moving infinitely when using maxbounds


I created a crs leaflet map and I'm trying to set its maxbounds to the bounds of the crs image. When I add the maxbounds attr there are three leaflet events that keep firing infinitely which cause the map to move infinitely. These are the events:

leafletDirectiveMap.move
leafletDirectiveMap.movestart
leafletDirectiveMap.moveend

This is my code. I'm using leaflet angular directive

  angular.module('pyvMap').controller('mainCtrl', [ '$scope', 'leafletData', 'leafletBoundsHelpers', function($scope, leafletData, leafletBoundsHelpers) {

var mapMinZoom = 2;
var mapMaxZoom = 6;
var maxBounds = leafletBoundsHelpers.createBoundsFromArray([[0,241.59375], [-132.65625, 0]]);

angular.extend($scope, {
  defaults: {
    maxZoom: mapMaxZoom,
    minZoom: mapMinZoom,
    zoomControl: false,
    crs: 'Simple',
    attributionControl: false,
    detectRetina: true,
    tileLayer: "http://d30jy4vw1d2n56.cloudfront.net/tiles/{z}/{x}/{y}.png",
    tileLayerOptions: {
      minZoom: mapMinZoom,
      maxZoom: mapMaxZoom,
      // bounds: maxBounds,
      opacity: 0.9,
      // reuseTiles: true,
      continuousWorld: true,
      noWrap: true,
      tileSize:256,
      crs: 'Simple',
      detectRetina: true,
    },
  },
  center: {
    zoom: 2
  },
  maxBounds: maxBounds
});}]);

HTML:

<leaflet  center="center"  maxBounds="maxBounds"  defaults="defaults"></leaflet>

Thanks!


Solution

  • Once width and height attributes are added to the <leaflet> tag as required, your issue does not look reproducible, whether using Leaflet version 0.7.7 or 1.2.0:

    https://plnkr.co/edit/iqiz29Jmz2WOgaNeNZIv?p=preview