设置最小和最大缩放级别(GWT OpenLayers)

设置最小和最大缩放级别(GWT OpenLayers),gwt,openlayers,gwt-openlayers,Gwt,Openlayers,Gwt Openlayers,我想在地图中设置最小和最大缩放级别 我的第一个想法是侦听“zoomstart”事件,但是org.gwtopenmaps.openlayers.client.Map类没有实现任何具有此类事件类型的侦听器。然后我试着听“动物修复”事件。我的想法是在缩放事件后检查zoomlevel,如果它高于/低于阈值,则缩放到该阈值。示例代码: @Override public void onMapZoom(MapZoomEvent eventObject) { if (eventO

我想在地图中设置最小和最大缩放级别

我的第一个想法是侦听“zoomstart”事件,但是org.gwtopenmaps.openlayers.client.Map类没有实现任何具有此类事件类型的侦听器。然后我试着听“动物修复”事件。我的想法是在缩放事件后检查zoomlevel,如果它高于/低于阈值,则缩放到该阈值。示例代码:

    @Override
    public void onMapZoom(MapZoomEvent eventObject) {
        if (eventObject.getSource().getZoom() > 18) {
            eventObject.getSource().zoomTo(18);
        }
    }

但我发现,zoomTo事件在这种情况下不会触发。有人能解决这个问题吗?

我认为这在OpenLayers(普通和GWT)中是不可能的。 我认为有两种解决方案

选择1 这对用户来说是丑陋的。当他看到地图被放大后,就回到了之前的缩放级别。 需要计时器,以便OL有机会设置缩放动画

    map.addMapZoomListener(new MapZoomListener()
    {
        @Override
        public void onMapZoom(final MapZoomEvent eventObject)
        {
            Timer t = new Timer()
            {

                @Override
                public void run()
                {
                    if (eventObject.getSource().getZoom() > 15)
                    {
                      map.zoomTo(15);
                    }
                    else if (eventObject.getSource().getZoom() < 10)
                    {
                        map.zoomTo(10);
                    }
                }
            };
            t.schedule(500);
        }
    });
map.addMapZoomListener(新的MapZoomListener()
{
@凌驾
MapZoom上的公共void(最终MapZoomEvent事件对象)
{
定时器t=新定时器()
{
@凌驾
公开募捐
{
如果(eventObject.getSource().getZoom()>15)
{
zoomTo地图(15);
}
else if(eventObject.getSource().getZoom()<10)
{
zoomTo地图(10);
}
}
};
t、 附表(500);
}
});
选择2 不要使用“缩放”默认缩放控件,而是创建自己的缩放按钮(使用普通GWT),并将这些按钮放在地图顶部。如果需要,可以使用与普通按钮相同的方式设置这些按钮的样式。“在普通GWT中创建,并使其看起来像OL”是我经常使用的技巧(例如,创建更高级的层切换器)


注意:我是GWT OpenLayers的开发人员之一,如果您愿意,我可以在我们的展示中添加一个示例,展示如何执行“选项2”。

我认为这在OpenLayers(普通和GWT)中是不可能的。 我认为有两种解决方案

选择1 这对用户来说是丑陋的。当他看到地图被放大后,就回到了之前的缩放级别。 需要计时器,以便OL有机会设置缩放动画

    map.addMapZoomListener(new MapZoomListener()
    {
        @Override
        public void onMapZoom(final MapZoomEvent eventObject)
        {
            Timer t = new Timer()
            {

                @Override
                public void run()
                {
                    if (eventObject.getSource().getZoom() > 15)
                    {
                      map.zoomTo(15);
                    }
                    else if (eventObject.getSource().getZoom() < 10)
                    {
                        map.zoomTo(10);
                    }
                }
            };
            t.schedule(500);
        }
    });
map.addMapZoomListener(新的MapZoomListener()
{
@凌驾
MapZoom上的公共void(最终MapZoomEvent事件对象)
{
定时器t=新定时器()
{
@凌驾
公开募捐
{
如果(eventObject.getSource().getZoom()>15)
{
zoomTo地图(15);
}
else if(eventObject.getSource().getZoom()<10)
{
zoomTo地图(10);
}
}
};
t、 附表(500);
}
});
选择2 不要使用“缩放”默认缩放控件,而是创建自己的缩放按钮(使用普通GWT),并将这些按钮放在地图顶部。如果需要,可以使用与普通按钮相同的方式设置这些按钮的样式。“在普通GWT中创建,并使其看起来像OL”是我经常使用的技巧(例如,创建更高级的层切换器)


注意:我是GWT OpenLayers的开发人员之一,如果您愿意,我可以在我们的展示中添加一个示例,展示如何执行“选项2”。

我认为这在OpenLayers(普通和GWT)中是不可能的。 我认为有两种解决方案

选择1 这对用户来说是丑陋的。当他看到地图被放大后,就回到了之前的缩放级别。 需要计时器,以便OL有机会设置缩放动画

    map.addMapZoomListener(new MapZoomListener()
    {
        @Override
        public void onMapZoom(final MapZoomEvent eventObject)
        {
            Timer t = new Timer()
            {

                @Override
                public void run()
                {
                    if (eventObject.getSource().getZoom() > 15)
                    {
                      map.zoomTo(15);
                    }
                    else if (eventObject.getSource().getZoom() < 10)
                    {
                        map.zoomTo(10);
                    }
                }
            };
            t.schedule(500);
        }
    });
map.addMapZoomListener(新的MapZoomListener()
{
@凌驾
MapZoom上的公共void(最终MapZoomEvent事件对象)
{
定时器t=新定时器()
{
@凌驾
公开募捐
{
如果(eventObject.getSource().getZoom()>15)
{
zoomTo地图(15);
}
else if(eventObject.getSource().getZoom()<10)
{
zoomTo地图(10);
}
}
};
t、 附表(500);
}
});
选择2 不要使用“缩放”默认缩放控件,而是创建自己的缩放按钮(使用普通GWT),并将这些按钮放在地图顶部。如果需要,可以使用与普通按钮相同的方式设置这些按钮的样式。“在普通GWT中创建,并使其看起来像OL”是我经常使用的技巧(例如,创建更高级的层切换器)


注意:我是GWT OpenLayers的开发人员之一,如果您愿意,我可以在我们的展示中添加一个示例,展示如何执行“选项2”。

我认为这在OpenLayers(普通和GWT)中是不可能的。 我认为有两种解决方案

选择1 这对用户来说是丑陋的。当他看到地图被放大后,就回到了之前的缩放级别。 需要计时器,以便OL有机会设置缩放动画

    map.addMapZoomListener(new MapZoomListener()
    {
        @Override
        public void onMapZoom(final MapZoomEvent eventObject)
        {
            Timer t = new Timer()
            {

                @Override
                public void run()
                {
                    if (eventObject.getSource().getZoom() > 15)
                    {
                      map.zoomTo(15);
                    }
                    else if (eventObject.getSource().getZoom() < 10)
                    {
                        map.zoomTo(10);
                    }
                }
            };
            t.schedule(500);
        }
    });
map.addMapZoomListener(新的MapZoomListener()
{
@凌驾
MapZoom上的公共void(最终MapZoomEvent事件对象)
{
定时器t=新定时器()
{
@凌驾
公开募捐
{
如果(eventObject.getSource().getZoom()>15)
{
zoomTo地图(15);
}
else if(eventObject.getSource().getZoom()<10)
{
zoomTo地图(10);
}
}
};
t、 附表(500);