Google (Local) Search API的简单使用介绍


Posted in Javascript onNovember 28, 2013

花了两天的时间来用Google的API来做这么一个小东西,其实真正的实现代码不是很多,十几行而已。费时间的工作是了解各个API的功能以及调试JavaScript。

下面简单介绍一下这次我用到的几个函数吧。

•构造函数google.search.LocalSearch()

这其实是创建了一个LocalSearch的Service,这个Service和其他Service(News, Blog, Web)一样,是供SearchControl使用的。这些Service决定了SearchControl的能力。

•设置LocalSearch的搜索结构类型

localSearch.setRestriction(google.search.Search.RESTRICT_TYPE, google.search.LocalSearch.TYPE_KMLONLY_RESULTS)

这说明搜索的结果没有business的结果,只有kml和geocode结果

•设置LocalSearch的搜索范围

localSearch.setCenterPoint("北京");

•google.search.SearcherOptions()

设置Search Service(Searcher)的属性,作为SearchControl.addSearcher()的一个属性使用,有以下选项可以选择:

1.设置结果的显示方式
•searcherOptions.setExpandMode(google.search.SearchControl.EXPAND_MODE_OPEN);

2.  设置档没有搜索结果时显示的文字

•  searcherOptions.setNoResultsString(google.search.SearchControl.NO_RESULTS_DEFAULT_STRING);

3.  设置结果显示的位置

•searcherOptions.setRoot(resultCanvas);

•new google.search.DrawOptions();

设置Google Search Control的显示方式

•drawOptions.setDrawMode(google.search.SearchControl.DRAW_MODE_TABBED)

设置显示方式为tabbed方式,即各个Searcher像tabs一样显示

•drawOptions.setInput(document.getElementById("input"));

将搜索输入框的默认值改为用户自定义的一个输入框

将用户选择搜索结果作为一个相应的GResult对象返回,如LocalSearch的GResult就是一个GLocalResult。

这个选项费了我很长时间才找到,原因有二,一是用的人少,文档少。二是我看的英文文档,花了挺长时间才看明白,其实看中文文档要花的时间更长,我觉得。

•searchControl.setOnKeepCallback(this, LocalSearchKeepHandler);

顺便贴上LocalSearchKeepHandler的代码,其参数为自动返回的那个GResult对象。

function LocalSearchKeepHandler(result) {
  var from = document.getElementById("from");
  alert("result.tilte = " + result.title);
  from.value = ProcessString(result.title);
  alert("from.value = " + from.value);
 // alert(result.title);
 }

干脆把这段代码整体贴出,方便阅读
google.load("search", "1", {"language": "zh-CN"});
 function initialize() {
     //LocalSearch Object used to create a local search service for the maps
        var localSearch = new google.search.LocalSearch(); 
        //restrict the local search resutls to kml and geocode results only, no business ones
        localSearch.setRestriction(google.search.Search.RESTRICT_TYPE, google.search.LocalSearch.TYPE_KMLONLY_RESULTS);             
        // Set the Local Search center point
  localSearch.setCenterPoint("北京"); 
  //It's about local search, which are used to set where the results will appear, a param of options
  var resultCanvas = document.getElementById("resultCanvas");       
  //options: open, alternate root
  var searcherOptions = new google.search.SearcherOptions();
  //show many results
  searcherOptions.setExpandMode(google.search.SearchControl.EXPAND_MODE_OPEN);
  //no results message
  searcherOptions.setNoResultsString(google.search.SearchControl.NO_RESULTS_DEFAULT_STRING);
  //options.setDrawMode(google.search.SearchControl.DRAW_MODE_TABBED);//web, local... in a tab show
  searcherOptions.setRoot(resultCanvas); //show the results in another place--<div id="resultCanvas">
     //SearchControl Object used to create a search service which will include a local search service                   
  var searchControl = new google.search.SearchControl(null);
  searchControl.addSearcher(localSearch, searcherOptions); 
  searchControl.addSearcher(new google.search.WebSearch());
  searchControl.addSearcher(new google.search.NewsSearch());
  searchControl.addSearcher(new google.search.BlogSearch());
  //draw options and set it to a tabbed view, 
  var drawOptions = new google.search.DrawOptions();
  drawOptions.setDrawMode(google.search.SearchControl.DRAW_MODE_TABBED)
  //make the searchControl return a result:GResult
  searchControl.setOnKeepCallback(this, LocalSearchKeepHandler);//keeping a search result
  //this option is used to set the search box position in a DOM tree.
  //drawOptions.setSearchFormRoot(document.getElementById("drawOptions"));
  //set the input box to a user defined element 
  //drawOptions.setInput(document.getElementById("input"));
  // tell the search box to draw itself and tell it where to attach
 // searchControl.draw(document.getElementById("searchBox"), drawOptions);//Here I changed fromaddress and toaddress to search, a new place
  //another user defined input box
  drawOptions.setInput(document.getElementById("input2"));
  searchControl.draw();
  /** The codes below is about google Ajax Map Search API
  //this code segment is used to add a sidebar to show the results of the search
  //I wonder why no 'var' exists here
   optinos = new Object();
   options.resultList = resultCanvas;
   options.resultFormat = "multi-line1";
   var lsc2 = new google.elements.LocalSearch(options);
   map.addControl(lsc2, new GControlPosition(G_ANCHOR_TOP_LEFT, new GSize(-282, -2)));
    */
        }
 google.setOnLoadCallback(initialize);

Javascript 相关文章推荐
深入分析jsonp协议原理
Sep 26 Javascript
javascript图片预加载完整实例
Dec 10 Javascript
jQuery实现ajax无刷新分页页码控件
Feb 28 Javascript
详解Node.js实现301、302重定向服务
Apr 07 Javascript
js实现放大镜特效
May 18 Javascript
JavaScript实现一个简易的计算器实例代码
May 10 Javascript
微信小程序使用wxParse解析html的实现示例
Aug 30 Javascript
vue的全局变量和全局拦截请求器的示例代码
Sep 13 Javascript
详解JavaScript中的坐标和距离
May 27 Javascript
Electron vue的使用教程图文详解
Jul 05 Javascript
ES6 proxy和reflect的使用方法与应用实例分析
Feb 15 Javascript
Vue-router编程式导航的两种实现代码
Mar 04 Vue.js
jquery实现弹出窗口效果的实例代码
Nov 28 #Javascript
asm.js使用示例代码
Nov 28 #Javascript
jquery实现动态菜单的实例代码
Nov 28 #Javascript
JavaScript中的常见问题解决方法(乱码,IE缓存,代理)
Nov 28 #Javascript
原始XMLHttpRequest方法详情回顾
Nov 28 #Javascript
jQuery处理xml格式的返回数据(实例解析)
Nov 28 #Javascript
使用js写的一个简易的投票
Nov 27 #Javascript
You might like
实用函数8
2007/11/08 PHP
使用jQuery.Validate进行客户端验证(初级篇) 不使用微软验证控件的理由
2010/06/28 Javascript
JQuery中html()方法使用不当带来的陷阱
2011/04/07 Javascript
js获取location.href的参数实例代码
2013/08/02 Javascript
js写出遮罩层登陆框和对联广告并自动跟随滚动条滚动
2014/04/29 Javascript
nodejs 实现模拟form表单上传文件
2014/07/14 NodeJs
node.js中的http.response.end方法使用说明
2014/12/14 Javascript
使用javascript实现雪花飘落的效果
2015/01/13 Javascript
javascript 动态创建表格的2种方法总结
2015/03/04 Javascript
JS判断字符串字节数并截取长度的方法
2016/03/05 Javascript
JS针对Array的各种操作汇总
2016/11/29 Javascript
JS碰撞运动实现方法详解
2016/12/15 Javascript
jQuery实现手机上输入后隐藏键盘功能
2017/01/04 Javascript
使用contextMenu插件实现Bootstrap table弹出右键菜单
2017/02/20 Javascript
js实现本地图片文件拖拽效果
2017/07/18 Javascript
Vue封装Swiper实现图片轮播效果
2018/02/06 Javascript
layui table 复选框跳页后再回来保持原来选中的状态示例
2019/10/26 Javascript
Javascript实现html转pdf高清版(提高分辨率)
2020/02/19 Javascript
Vue Router 实现动态路由和常见问题及解决方法
2020/03/06 Javascript
vue-cli4.x创建企业级项目的方法步骤
2020/06/18 Javascript
从0到1学习JavaScript编写贪吃蛇游戏
2020/07/28 Javascript
python算法演练_One Rule 算法(详解)
2017/05/17 Python
Python实现字符串反转的常用方法分析【4种方法】
2017/09/30 Python
python3+PyQt5自定义视图详解
2018/04/24 Python
使用pandas对两个dataframe进行join的实例
2018/06/08 Python
nohup后台启动Python脚本,log不刷新的解决方法
2019/01/14 Python
Django中密码的加密、验密、解密操作
2019/12/19 Python
pycharm 更改创建文件默认路径的操作
2020/02/15 Python
python3 logging日志封装实例
2020/04/08 Python
css3的@media属性实现页面响应式布局示例代码
2014/02/10 HTML / CSS
行政工作个人的自我评价
2014/02/13 职场文书
党员干部群众路线个人整改措施
2014/09/18 职场文书
2014年技术部工作总结
2014/12/12 职场文书
公务员保密工作承诺书
2015/05/04 职场文书
MySQL 不等于的三种使用及区别
2021/06/03 MySQL
Smart 2 车辆代号 HC11 全新谍照曝光
2022/04/21 数码科技