GIS(六)——实现js版搜狗地图周边搜索功能

       在上一篇文章《GIS(五)——完成js版搜狗地图基本交互搜索功能》中,介绍了搜狗地图的关键字搜索功能,今天就实现如下另外一个重要功能吧——那就是周边搜索功能。javascript

       按照惯例,仍是把官网上的示例代码给你们贴出来。飞机票在此。周边搜索的功能,跟关键字搜索实际上是同样的,也是主要用到的了SearchRequest这个类,点击这里查看api文档。SearchRequest 对象规范:html

属性 类型 说明
map Map 进行搜索的地图实例
renderer SearchRenderer 将结果进行渲染的对象。也能够经过setRenderer方法设置
range object 必选。表示查询范围。范围有多个属性,用于不一样范围的查询{ city:城市<String>, boundFlag:0|2(0表明视野所在的城市内搜索; 2表明视野内搜索)<Number>, center:以中心点查询<LatLng |Point>, radius:以中心点进行查询时指定半径<Number>,limit:0|1(指定半径时有效,表明是否严格限制半径。0表明不限制,1表明限制)<Number> }
what object 必选。表示要查询的内容。有三个属性{ keyword:关键字<String>, classid:分类id<String>, id:uid或者dataid<String> }, 分类id:普通数字表明小类id,前缀加C_的表明大类id。查询时关键字与分类id 能够联合查询。id 只能单独查询,若是存在id属性,就只按id查询。 【查看全部分类id
clientid String 可选。为用户提供更稳定的服务。【查看详情

       从api文档中也能够看到,range这个参数是用来限定搜索范围的,而what制定查询内容的。因此只要咱们想查什么,就要去找它的分类id,而后再进行检索。java

       好了,要了解的也就这么多,接下来就是代码实现部分了。api

       在原先的代码,添加一个对象,用来将结果渲染到右侧列表中:网站

var sRender_area;//搜索周边渲染对象
       在initialize方法中,添加建立周边搜索的渲染对象:
function initialize(){
  //....
  sRender=new sogou.maps.SearchRenderer();//建立搜索渲染对象
  sRender_area=new sogou.maps.SearchRenderer();//建立周边搜索渲染对象
}
       添加一个搜索周边的方法:
//搜索周边
function search_area(classid){
  clearMarker(sRender_area);//清除定位标记
  clearMarker(sRender);
  var request={
         'map':map,
         'what':{
              'classid':classid
         },
         'range':{
              'city':'北京',
              'center':new sogou.maps.Point(center.x,center.y),
              'radius':1000,
              'limit':1 //严格限制半径
         }
    };
  var search=new sogou.maps.Search();//建立搜索实例
  search.search(request);
  sRender_area=new sogou.maps.SearchRenderer({'panel':document.getElementById('result')});
  search.setRenderer(sRender_area);
}

       js都修改完了,添加上搜索周边的按钮:ui

<!--搜索周边-->
  <input type="button" onclick="search_area('1228,1403,1330,1332')" value="周边餐饮" />
  <input type="button" onclick="search_area('97,1264,1262')" value="周边公交" />
  <input type="button" onclick="search_area('83,1321,1259')" value="周边商场" />
  <input type="button" onclick="search_area('C_32')" value="周边酒店" />
  <input type="button" onclick="search_area('1261')" value="周边医院" />

       效果图以下:spa


点击这里到网站上查看.net

       周边搜索和关键字搜索都是同一个,只不过设定的参数不一致。并且我能够同时设定关键字和周边搜索,进行范围更小更精确的搜索。只是用的话,其实没什么太大的难度,只要按照官方的api文档和示例代码就能够了解怎么开发了。code

       上面提到的都是从技术的角度来验证问题,若是真正使用的时候,最起码仍是要提供智能提示的功能。界面也不能这么简陋,下一篇文章,我将解决这2个问题。敬请期待吧。htm

相关文章
相关标签/搜索