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 相关文章推荐
分享一个自己动手写的jQuery分页插件
Aug 28 Javascript
node.js中的fs.fchmod方法使用说明
Dec 16 Javascript
JavaScript中的getTime()方法使用详解
Jun 10 Javascript
详解vue数据渲染出现闪烁问题
Jun 29 Javascript
JS分页的实现(同步与异步)
Sep 16 Javascript
jquery ajaxfileupload异步上传插件
Nov 21 jQuery
如何去除vue项目中的#及其ie9兼容性
Jan 11 Javascript
vue2.0 兄弟组件(平级)通讯的实现代码
Jan 15 Javascript
webpack打包node.js后端项目的方法
Mar 10 Javascript
使用vue中的混入mixin优化表单验证插件问题
Jul 02 Javascript
vue中解决拖拽改变存在iframe的div大小时卡顿问题
Jul 22 Javascript
微信小程序动态评分展示/五角星展示/半颗星展示/自定义长度展示功能的实现
Jul 22 Javascript
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
php自动跳转中英文页面
2008/07/29 PHP
PHP实现二叉树的深度优先与广度优先遍历方法
2015/09/28 PHP
Nigma vs Liquid BO3 第一场2.14
2021/03/10 DOTA
javascript  Error 对象 错误处理
2008/05/18 Javascript
jQuery实现原理的模拟代码 -6 代码下载
2010/08/16 Javascript
HTML DOM的nodeType值介绍
2011/03/31 Javascript
扩展JavaScript功能的正确方法(译文)
2012/04/12 Javascript
js 连接数据库如何操作数据库中的数据
2012/11/23 Javascript
js之事件冒泡和事件捕获详细介绍
2013/10/28 Javascript
浅析JavaScript中的typeof运算符
2013/11/30 Javascript
JS保留两位小数,多位小数的示例代码
2014/01/07 Javascript
node.js中的console.log方法使用说明
2014/12/09 Javascript
JavaScript入门基础
2015/08/12 Javascript
JavaScript使用DeviceOne开发实战(一) 配置和起步
2015/12/01 Javascript
详解AngularJS实现表单验证
2015/12/10 Javascript
微信小程序使用picker实现时间和日期选择框功能【附源码下载】
2017/12/11 Javascript
vue-cli配置全局sass、less变量的方法
2019/06/06 Javascript
探索JavaScript中私有成员的相关知识
2019/06/13 Javascript
JS多个异步请求 按顺序执行next实现解析
2019/09/16 Javascript
小程序的上传文件接口的注意要点解析
2019/09/17 Javascript
vue实现导航标题栏随页面滚动渐隐渐显效果
2020/03/12 Javascript
Flask SQLAlchemy一对一,一对多的使用方法实践
2013/02/10 Python
Python调用C语言开发的共享库方法实例
2015/03/18 Python
解决python3中自定义wsgi函数,make_server函数报错的问题
2017/11/21 Python
Python中Numpy包的安装与使用方法简明教程
2018/07/03 Python
python爬虫开发之selenium模块详细使用方法与实例全解
2020/03/09 Python
keras用auc做metrics以及早停实例
2020/07/02 Python
奖学金自我鉴定范文
2013/10/03 职场文书
收银出纳员岗位职责
2014/02/23 职场文书
四群教育工作实施方案
2014/03/26 职场文书
党员批评与自我批评
2014/10/15 职场文书
2015年工程师工作总结
2015/04/30 职场文书
永远是春天观后感
2015/06/12 职场文书
工程进度款催款函
2015/06/24 职场文书
​(迎国庆)作文之我爱我的祖国
2019/09/19 职场文书
PostgreSQL怎么创建分区表详解
2022/06/25 PostgreSQL