maptalks.js icon indicating copy to clipboard operation
maptalks.js copied to clipboard

限制地图的拖动范围

Open wangbingqian110 opened this issue 7 years ago • 14 comments

你好: 再使用maptalks与openlayers时遇到同一个问题,就是API只提供了限制地图中心拖动范围的方法(在maptalks中为map.setMaxExtent(extent);在openlayers中为设置view的extent属性),如果我想要实现限制地图显示的边界,也就是说在视域范围内只显示(-180,-90,180,90)范围内的地图,而不是限制中心,这样的话只能自己实现吗?还是有直接的方法呢?谢谢!

wangbingqian110 avatar Apr 26 '18 12:04 wangbingqian110

可以通过给layer设置mask来实现

const polygon = new maptalks.Polygon(coordinates);
//基于canvas的图层都支持
layer.setMask(polygon);

参考示例:

http://maptalks.org/examples/cn/tilelayer-projection/tile-mask/#tilelayer-projection_tile-mask

fuzhenn avatar Apr 26 '18 13:04 fuzhenn

@fuzhenn 谢谢您的解答。

wangbingqian110 avatar Apr 26 '18 13:04 wangbingqian110

啊.. 刚发现setMask有个bug.. 会偶发性的mask失败 改了一下发了版本 v0.39.8 😀

fuzhenn avatar Apr 26 '18 13:04 fuzhenn

@fuzhenn 哇,我刚还在打字呢,你就回答了我,真及时!😀

wangbingqian110 avatar Apr 26 '18 13:04 wangbingqian110

真是谢谢你,不过我发现我并不是想要这个功能...我想要的功能是用一个边框限制地图的拖动范围,就是像高德地图缩放到最小级别时,使劲往下拖它会限制的那种。

wangbingqian110 avatar Apr 26 '18 13:04 wangbingqian110

你要的是设定了最大范围以后,能像高德地图那样,把地图拖动范围也限制在这个范围里,是吗?

这个功能目前还没有,不过我可以修改一下setMaxExtent,把目前的拖出回弹方式,改成限制拖动范围

fuzhenn avatar Apr 26 '18 13:04 fuzhenn

我要的确实是这个功能,但是我认为对这个方法直接改动不是太好,因为目前这个功能也很有用,我建议为map对象新加个方法,例如setMapBound什么的,来实现这个功能。

wangbingqian110 avatar Apr 26 '18 13:04 wangbingqian110

我以前在用openlayers的时候基于这个方法setMaxExtent(限制屏幕中心点的范围的方法)实现过上述功能,就是在map的move事件中来实时计算出这个Extent,就是感觉不太简便,您有更好的实现方法吗?

wangbingqian110 avatar Apr 26 '18 13:04 wangbingqian110

要实现的话,确实可以暂时用move事件来做,我写了个比较粗糙的实现可以参考一下

http://jsfiddle.net/fuzhenn/44fyf22f/1/

我也想一下这个需求如何处理更好,可以考虑增加一个新的方法

fuzhenn avatar Apr 26 '18 14:04 fuzhenn

是的,谢谢你那么晚还为我解答,真心感谢。

wangbingqian110 avatar Apr 27 '18 01:04 wangbingqian110

@wangbingqian110 我准备增加一个新的方法用来实现这个功能,你看如何?

map.restrictExtent(new maptalks.Extent(-180, -80, 180, 80)))

fuzhenn avatar May 14 '18 09:05 fuzhenn

@fuzhenn This is a good idea!haha

wangbingqian110 avatar May 16 '18 01:05 wangbingqian110

大佬,map.restrictExtent(new maptalks.Extent(-180, -80, 180, 80)) 这个方法啥时候能支持下

The-End-Hero avatar Aug 02 '19 01:08 The-End-Hero

@fuzhenn hi, When is the feature successed

zchuhui avatar Jul 20 '20 07:07 zchuhui