mariczone

Problem with limit zoom levels(want to stop zoom method)

Discussion created by mariczone on May 1, 2014
Latest reply on May 2, 2014 by mariczone
My map has limit level at 21 level, and I limit user at level 19 that user can't zoom more on this level.

this is my code.
    map.on("zoom-end", function(){
     if(map.getLevel() > 19 )
     {
      map.setZoom(19);
     }
    });// end map zoomEnd


The result is after map zoom over level 19 , my map will continue zoom then re-render and zoom back to level 19.

But what i need is map must not zoom anymore at level 19.

So, I think i must do something at "zoom-start" event for assign it to stop zoom.
map.on("zoom-start", function(){
  if(map.getLevel() > 18 )
  {
   //do something to break, cancel zoom method
                        //like disableScrollWheelZoom() results that user can't not zoom anymore
                        // but i don't want to disable it because I still let user to zoom out.
  }
 });

But I don't know how.
________________________________________________________________________

On other ways that I try is I set maxZoom on starting create map.
var lods = [
    {"level" : 0, "resolution" : 156543.03392800014, "scale" : 5.91657527591555E8},
    {"level" : 1, "resolution" : 78271.51696399994, "scale" : 2.95828763795777E8},
    {"level" : 2, "resolution" : 39135.75848200009, "scale" : 1.47914381897889E8},
    {"level" : 3, "resolution" : 19567.87924099992, "scale" : 7.3957190948944E7},
    {"level" : 4, "resolution" : 9783.93962049996, "scale" : 3.6978595474472E7},
    {"level" : 5, "resolution" : 4891.96981024998, "scale" : 1.8489297737236E7},
    {"level" : 6, "resolution" : 2445.98490512499, "scale" : 9244648.868618},
    {"level" : 7, "resolution" : 1222.992452562495, "scale" : 4622324.434309},
    {"level" : 8, "resolution" : 611.4962262813797, "scale" : 2311162.217155},
    {"level" : 9, "resolution" : 305.74811314055756, "scale" : 1155581.108577},
    {"level" : 10, "resolution" : 152.87405657041106, "scale" :  577790.554289},
    {"level" : 11, "resolution" : 76.43702828507324, "scale" : 288895.277144},
    {"level" : 12, "resolution" : 38.21851414253662, "scale" : 144447.638572},
    {"level" : 13, "resolution" : 19.10925707126831, "scale" : 72223.819286},
    {"level" : 14, "resolution" : 9.554628535634155, "scale" : 36111.909643},
    {"level" : 15, "resolution" : 4.77731426794937, "scale" : 18055.954822},
    {"level" : 16, "resolution" : 2.388657133974685, "scale" : 9027.977411},
    {"level" : 17, "resolution" : 1.1943285668550503, "scale" : 4513.988705},
    {"level" : 18, "resolution" : 0.5971642835598172, "scale" : 2256.994353},
    {"level" : 19, "resolution" : 0.29858214164761665, "scale" : 1128.497176},
    {"level" : 20, "resolution" : 0.1492910708238083, "scale" : 564.248588},
    {"level" : 21, "resolution" : 0.0746455354119042, "scale" : 282.124294}
    ];
    map = new Map("map",{
     lods: lods,
     center:[100.543623,13.703039],
     zoom: 18,
                                        maxZoom: 19,
     fadeOnZoom: true
    });


On this way user can't zoom anymore at level 19, but My map concept is outdoor layer and indoor layer that
I will limit user to zoom at level 19 because level 0 - 19 is outdoor layer, If user need to zoom in indoor layer(level 20 - 21).
User must click something like symbol or button for zoom in to indoor layer.

so I need to set maxZoom again after click symbol or button. but i can't find the way to set it.
I only found method like getMaxZoom(). but i don't found method setMaxZoom() or something like this.

Thanks for helps.

Outcomes