最近需要用百度API得到北京市范围内一些感兴趣的大量数据。查询百度API,定义LocalSearch实例后,调用setLocation()将区域限定为北京,然后调用search()方法。然而search()方法每次请求后最多返回760条数据(后来知道是由于百度API的限制),数据没查全,所以只好将北京分成若干个区域分别搜索,因此用到了searchInBounds()方法。使用searchInBounds()过程中我经常会遇到方法返回值为2(位置结果未知)的错误,请教了公司大牛后,自己又做了几个小实验,现在将这些实验总结一下,希望对以后正确使用searchInBounds()提供帮助。

一、地图加载时初始化比例尺问题

       比如在吉林市圈定一个搜索区域,如下图区域1,在这个区域尺度下,对地图使用centerAndZoom()进行初始化时,比例尺设置为9-18级均可搜索成功,而8级以下就会报代码为2的错误。搜索图中较大区域2时,比例尺设置为11-18均可,而10级及以下会报错。 因此,在使用 searchInBounds()搜索时,最好使用较大比例尺。

 

二、地图加载时可视范围的中心点问题。

       视野范围的中心点最好是搜索区域的中心点。也就是使用centerAndZoom()进行初始化时最好使用搜索区域的中心点坐标。而视野范围内是否把整个搜索区域全部包含住着并不十分重要。

三、关于较大区域搜索问题

       选择了几乎覆盖整个长春市的区域,设置好中心点以及比例尺后,区域搜索成功。

四、关于跨市搜索的问题

       如下图搜索区域跨了长春和吉林两个市,在设置了正确的中心点和较大的比例尺后搜索成功。

 

综上所述:

    提高区域搜索searchInBound成功率的正确方法有两点:

     1、尽量设置较大的比例尺

     2、视野中心点坐标最好为搜索区域中点坐标

     1个注意:使用centerAndZoom初始化地图时,不要使用城市名称因为使用城市名称会有默认的比例尺。

      如果依然报错,请尝试刷新。