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读取XML文件数据并显示的实现代码
Dec 16 Javascript
Tips 带三角可关闭的文字提示
Oct 06 Javascript
用JS判断IE版本的代码 超管用!
Aug 09 Javascript
情人节专属 纯js脚本1k大小的3D玫瑰效果
Feb 11 Javascript
js检测浏览器版本、核心、是否移动端示例
Apr 24 Javascript
浅谈Javascript的静态属性和原型属性
May 07 Javascript
jQuery多个版本和其他js库冲突的解决方法
Aug 11 Javascript
js防阻塞加载的实现方法
Sep 09 Javascript
原生js实现轮播图
Feb 27 Javascript
vue脚手架中配置Sass的方法
Jan 04 Javascript
vue的安装及element组件的安装方法
Mar 09 Javascript
浅谈JS中几种轻松处理'this'指向方式
Sep 16 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模板引擎技术简单实现
2016/03/15 PHP
thinkphp框架实现删除和批量删除
2016/06/29 PHP
PHP中in_array的隐式转换的解决方法
2018/03/06 PHP
PHP生成随机码的思路与方法实例探索
2019/04/11 PHP
PHP中__set()实例用法和基础讲解
2019/07/23 PHP
漂亮的widgets,支持换肤和后期开发新皮肤
2007/04/23 Javascript
javascript 处理事件绑定的一些兼容写法
2009/12/24 Javascript
javascript常见数字进制转换实例分析
2016/04/21 Javascript
动态更新highcharts数据的实现方法
2016/05/28 Javascript
JS实现n秒后自动跳转的两种方法
2020/11/30 Javascript
原生JS封装animate运动框架的实例
2017/10/12 Javascript
JavaScript运行原理分析
2018/02/09 Javascript
Vue中Axios从远程/后台读取数据
2019/01/21 Javascript
Layui 带多选框表格监听事件以及按钮自动点击写法实例
2019/09/02 Javascript
使用python绘制人人网好友关系图示例
2014/04/01 Python
python网络编程学习笔记(七):HTML和XHTML解析(HTMLParser、BeautifulSoup)
2014/06/09 Python
Python3实现从指定路径查找文件的方法
2015/05/22 Python
python多进程共享变量
2016/04/06 Python
Django 视图层(view)的使用
2018/11/09 Python
Python OpenCV对本地视频文件进行分帧保存的实例
2019/01/08 Python
python利用Tesseract识别验证码的方法示例
2019/01/21 Python
Python实现的银行系统模拟程序完整案例
2019/04/12 Python
Jupyter Notebook 安装配置与使用详解
2021/01/06 Python
英国外籍人士的在线超市:British Corner Shop
2019/06/03 全球购物
运动鞋、街头服装、手表和手袋的实时市场:StockX
2020/11/25 全球购物
竞聘演讲稿范文
2014/01/12 职场文书
工程造价专业大学生职业规划范文
2014/03/09 职场文书
《音乐之都维也纳》教学反思
2014/04/16 职场文书
志愿者活动总结报告
2014/06/27 职场文书
公司授权委托书范文
2014/09/21 职场文书
2014年综治维稳工作总结
2014/11/17 职场文书
党员个人总结范文
2015/02/14 职场文书
2015年党总支工作总结
2015/05/25 职场文书
妇联2016年六一国际儿童节活动总结
2016/04/06 职场文书
授权协议书范本(3篇)
2019/10/15 职场文书
Python学习之异常中的finally使用详解
2022/03/16 Python