使用GeoHey SDK开发地图应用的那些小技巧(壹)

随着我们的用户群体的壮大,也有越来越多的开发者开始使用我们的SDK进行地图应用的开发。跟着这喜人的涨势随之而来的,是时常有用户通过我们的交流QQ群或是微信群,向我们询问一些关于SDK上开发的问题。这其中有一些问题是用户对GIS的一些知识不太了解,还有一部分问题是虽然清晰的明白要做什么,但是在实现上遇到了问题。

于是经过了5分钟的深思熟虑,笔者决定将一些询问次数较多的问题,以及一些常见的坑在这里列出来,方便吃瓜群众们排查“地雷”。每一期我们将解决不定数量的问题。由于是第一期,因此会出一些简单基础的问题开始,如果您的问题比较复杂,请期待后续的内容。

那么,让我们耿直的开始吧。

1.如何控制地图的缩放,让地图缩小到一定程度就不再缩小?

var map = new G.Map('mapContainer',{

maxRes: 160000,

minRes: 19.109257,

initStatus: {center: [0, 0]}

});

请注意在初始化地图容器map时的配置maxRes和minRes这两个参数。其中,maxRes表示地图的最大比例尺,minRes表示地图的最小比例尺。直白一点说,就是地图可以最大放大到多大和最小缩小到多小。因为,如果要限制地图的缩放比例尺,只需要对这两个数据进行调整即可。此外,如果使用鼠标滚轮进行缩小,那么每放大/缩小一个级别,它的比例尺与缩放之前的级别的比例是4。因此,如果要手动控制最大最小比例尺的时候,如果需要让修改后的比例尺刚好落在鼠标滚轮的缩放级别上,只需要对现最大最小比例尺进行除4或者乘4的计算即可。

2.通过鼠标滚轮缩放地图后,想让地图最大/最小卡在这个比例尺下,如何获得当前地图的比例尺?
有两种办法可以解决这个问题。
A:如果map对象设置为全局可以获取。那么,打开chrome浏览器,或者FireFox,打开命令控制台。使用鼠标滚轮进行缩放后,输入map.getResolution();,即可获得当前map对象的比例尺。
B:如果map对象全局不可直接获取。那么,请在map初始化后,添加对“zoomEnd”事件的监听绑定事件,并在事件中,打印出map.getResolution()。打开浏览器,在命令控制台中查看打印信息即可。

3.绘制完成的对象为何点击时无法进行编辑?
在绘制完成后,将绘制对象g添加到图层后,请使用

g.updateOptions({clickable:true});

再次设置g对象的点击属性。该数据在创建几何对象时,默认为false。同时,请确定对layer图层添加了"graphicClicked"这个时间的监听绑定事件,并在事件中,含有以下代码(变量名称请自行替换)

layer.bind("graphicClicked", function(e){

e.graphic.startEdit();

})

这样,绘制完成后的对象就可以触发点击事件,并在触发事件后,进入编辑状态。

4.在使用切片图层TileLayer时,如果不想让切片图层在初始化的时候就加载内容,要怎么做?
可以在初始化TileLayer时,将G.Layer.Tile的url参数设置为空。这样,即使图层初始化了,也不会有任何请求发出。之后使用

tileLayer.setUrl(url);

重新设置切片图层的url地址,方法会自动刷新数据。之后还可以使用layer.clear()方法来强制刷新图层。

5.当触发一个事件后,想要修改整个矢量图形图层中的要素的style,要怎么做?
可以使用通过G.Layer.Graphic()中的setStyle()方法,来对一个矢量图形图层中的所有要素进行样式设置。如果还需要针对其中的数个要素做个别处理,可以在setStyle()方法后,再进行处理。

对我们的SDK在使用上有问题的同学,可以先访问我们的示例页面,在其中进行在线调试。如果依然有问题,也可以关注我们的公众号,或是加入我们的QQ交流群(164183186)。静候您的光临。

灰羽

继续阅读此作者的更多文章