Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/441.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 以3为增量放大和缩小谷歌地图_Javascript_Google Maps - Fatal编程技术网

Javascript 以3为增量放大和缩小谷歌地图

Javascript 以3为增量放大和缩小谷歌地图,javascript,google-maps,Javascript,Google Maps,我之前问过一个问题,哪一个有很好的解决方案(见下文),但现在我想知道是否有可能修改Google Maps API的放大和缩小级别,以便在触发zoom\u change事件时,地图以3为增量进行更改 上一个线程中的此解决方案在增量为2时效果良好: google.maps.event.addListener(map,'zoom_changed',function(){ var z = this.getZoom(); if (z % 2) { //when zoom is a odd

我之前问过一个问题,哪一个有很好的解决方案(见下文),但现在我想知道是否有可能修改Google Maps API的放大和缩小级别,以便在触发
zoom\u change
事件时,地图以3为增量进行更改

上一个线程中的此解决方案在增量为2时效果良好:

google.maps.event.addListener(map,'zoom_changed',function(){
    var z = this.getZoom();
    if (z % 2) { //when zoom is a odd number
        var fx = ((!isNaN(this.get('z')) && this.get('z') < z)) ? 2:0;
        this.setZoom(Math.floor(z / 2) * 2 + fx);
    } else {
        this.set('z', z);
    }
});
google.maps.event.addListener(映射,'zoom\u changed',函数(){
var z=this.getZoom();
如果(z%2){//缩放为奇数时
var fx=(!isNaN(this.get('z'))和&this.get('z')
JSFIDLE的一个例子是


编辑:因此,如果2被3替换,则上述代码有效。但有一件事我很难做到,那就是将初始缩放设置为11。它不起作用。如果缩放率为3,则默认为9;如果缩放率为2,则默认为10。

您可以轻松更改缩放率
如果您将速率分配给var zoom_rate,则可以轻松更改配置。请参阅此小提琴

函数初始化(){
var zoom_rate=3//指定缩放速率
var ctrl=document.getElementById('zoom');
map=new google.maps.map(document.getElementById('map_canvas'){
缩放:14,
中心:新google.maps.LatLng(52.549,
13.425),
诺克利尔:是的
}),
控件[google.maps.ControlPosition.TOP\u CENTER].push(ctrl);
google.maps.event.addListener(映射'zoom_changed',函数(){
var z=this.getZoom();
如果(z%缩放率){//当缩放为奇数时
var fx=(!isNaN(this.get('z'))和&this.get('z')
您可以轻松更改缩放速率
如果您将速率分配给var zoom_rate,则可以轻松更改配置。请参阅此小提琴

函数初始化(){
var zoom_rate=3//指定缩放速率
var ctrl=document.getElementById('zoom');
map=new google.maps.map(document.getElementById('map_canvas'){
缩放:14,
中心:新google.maps.LatLng(52.549,
13.425),
诺克利尔:是的
}),
控件[google.maps.ControlPosition.TOP\u CENTER].push(ctrl);
google.maps.event.addListener(映射'zoom_changed',函数(){
var z=this.getZoom();
如果(z%缩放率){//当缩放为奇数时
var fx=(!isNaN(this.get('z'))和&this.get('z')
Hmm,当我尝试这样做时,我最终得到了
超过最大调用堆栈大小的错误。谢谢你。我正在调查。在小提琴中,这不会发生。。我已经在我的环境中尝试了firefox的代码和工作。。正确的。。从0到21可以很好地工作——scrool控制盘和控制我正在努力解决的一件事是将初始缩放设置为11。它不起作用。如果缩放率为3,则默认为9;如果缩放率为2,则默认为10。如果缩放率不是2或3的倍数,则您的算法将不允许使用它。是否可以修改算法以适应此情况?这不是我的算法,而是来自另一个用户,基于我在问题中链接的线程。嗯,当我尝试此方法时,我得到了
超过最大调用堆栈大小的错误。谢谢你。我正在调查。在小提琴中,这不会发生。。我已经在我的环境中尝试了firefox的代码和工作。。正确的。。从0到21可以很好地工作——scrool控制盘和控制我正在努力解决的一件事是将初始缩放设置为11。它不起作用。如果缩放率为3,则默认为9;如果缩放率为2,则默认为10。如果缩放率不是2或3的倍数,则您的算法将不允许使用它。是否可以修改算法以适应此情况?这不是我的算法,而是来自另一个用户,基于我在问题中链接的线程。
    function initialize() {


      var zoom_rate = 3    // assign the zoom rate

      var ctrl = document.getElementById('zoom');
      map = new google.maps.Map(document.getElementById('map_canvas'), {
          zoom: 14,
          center: new google.maps.LatLng(52.549,
            13.425),
          noClear: true
        }),


        map.controls[google.maps.ControlPosition.TOP_CENTER].push(ctrl);

      google.maps.event.addListener(map, 'zoom_changed', function() {
        var z = this.getZoom();
        if (z % zoom_rate) { //when zoom is a odd number
          var fx = ((!isNaN(this.get('z')) && this.get('z') < z)) ? zoom_rate : 0;
          this.setZoom(Math.floor(z / zoom_rate) * zoom_rate + fx);
        } else {
          this.set('z', z);
        }
        ctrl.innerHTML = this.getZoom();
      });
      google.maps.event.trigger(map, 'zoom_changed');
    }


    google.maps.event.addDomListener(window, 'load', initialize);