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 相关文章推荐
ExtJs Excel导出并下载IIS服务器端遇到的问题
Sep 16 Javascript
深入理解JavaScript系列(4) 立即调用的函数表达式
Jan 15 Javascript
jquery动态加载select下拉框示例代码
Dec 10 Javascript
js特殊字符过滤的示例代码
Mar 05 Javascript
JS生成某个范围的随机数【四种情况详解】
Apr 20 Javascript
jQuery基于扩展简单实现倒计时功能的方法
May 14 Javascript
JavaScript实现256色转灰度图
Feb 22 Javascript
一个有意思的鼠标点击文字特效jquery代码
Sep 23 jQuery
总结js函数相关知识点
Feb 27 Javascript
解决Vue 通过下表修改数组,页面不渲染的问题
Mar 08 Javascript
通过vue提供的keep-alive减少对服务器的请求次数
Apr 01 Javascript
js实现全选反选不选功能代码详解
Apr 24 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生成Flash动画的实现代码
2010/03/12 PHP
队列在编程中的实际应用(php)
2010/09/04 PHP
PHP使用array_merge重新排列数组下标的方法
2015/07/22 PHP
php获取当前url地址的方法小结
2017/01/10 PHP
PHP+MySQL实现输入页码跳转到指定页面功能示例
2018/06/01 PHP
Yii2框架控制器、路由、Url生成操作示例
2019/05/27 PHP
thinkphp 框架数据库切换实现方法分析
2020/05/18 PHP
jquery.ui.progressbar 中文文档
2009/11/26 Javascript
Jquery ajaxStart()与ajaxStop()方法(实例讲解)
2013/12/18 Javascript
jQuery实现Div拖动+键盘控制综合效果的方法
2015/03/10 Javascript
AngularJS入门教程之AngularJS表达式
2016/04/18 Javascript
原生js实现无缝轮播图效果
2017/01/11 Javascript
js实现交通灯效果
2017/01/13 Javascript
vue实现pdf导出解决生成canvas模糊等问题(推荐)
2018/10/18 Javascript
JavaScript栈和队列相关操作与实现方法详解
2018/12/07 Javascript
ES11屡试不爽的新特性,你用上了几个
2020/10/21 Javascript
python读取html中指定元素生成excle文件示例
2014/04/03 Python
Python 自动刷博客浏览量实例代码
2017/06/14 Python
关于Python如何避免循环导入问题详解
2017/09/14 Python
pandas中去除指定字符的实例
2018/05/18 Python
python爬虫正则表达式之处理换行符
2018/06/08 Python
在Python中append以及extend返回None的例子
2019/07/20 Python
给大家整理了19个pythonic的编程习惯(小结)
2019/09/25 Python
使用Tkinter制作信息提示框
2020/02/18 Python
Python如何将函数值赋给变量
2020/04/28 Python
AmazeUI 点击元素显示全屏的实现
2020/08/25 HTML / CSS
魅力惠奢品线上平台:MEI.COM
2016/11/29 全球购物
澳大利亚领先的在线礼品网站:Gifts Australia
2020/08/15 全球购物
关于.NET, HTML的五个问题
2012/08/29 面试题
世界经理人咨询有限公司面试
2014/09/23 面试题
钳工实习自我鉴定
2013/09/19 职场文书
乡镇八一建军节活动方案
2014/08/24 职场文书
大学毕业生自我评价
2015/03/02 职场文书
2015婚礼主持词开场白
2015/05/28 职场文书
2019年二手房买卖合同范本
2019/10/14 职场文书
MySQL 原理优化之Group By的优化技巧
2022/08/14 MySQL