zl程序教程

您现在的位置是:首页 >  其他

当前栏目

Google(Local)SearchAPI的简单使用介绍

Google 使用 简单 介绍 local
2023-06-13 09:15:13 时间

花了两天的时间来用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()

设置SearchService(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);

•newgoogle.search.DrawOptions();

设置GoogleSearchControl的显示方式

•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对象。

复制代码代码如下:

functionLocalSearchKeepHandler(result){
  varfrom=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"});
 functioninitialize(){
    //LocalSearchObjectusedtocreatealocalsearchserviceforthemaps
       varlocalSearch=newgoogle.search.LocalSearch(); 
       //restrictthelocalsearchresutlstokmlandgeocoderesultsonly,nobusinessones
       localSearch.setRestriction(google.search.Search.RESTRICT_TYPE,google.search.LocalSearch.TYPE_KMLONLY_RESULTS);            
       //SettheLocalSearchcenterpoint
  localSearch.setCenterPoint("北京"); 
  //It"saboutlocalsearch,whichareusedtosetwheretheresultswillappear,aparamofoptions
  varresultCanvas=document.getElementById("resultCanvas");      
  //options:open,alternateroot
  varsearcherOptions=newgoogle.search.SearcherOptions();
  //showmanyresults
  searcherOptions.setExpandMode(google.search.SearchControl.EXPAND_MODE_OPEN);
  //noresultsmessage
  searcherOptions.setNoResultsString(google.search.SearchControl.NO_RESULTS_DEFAULT_STRING);
  //options.setDrawMode(google.search.SearchControl.DRAW_MODE_TABBED);//web,local...inatabshow
  searcherOptions.setRoot(resultCanvas); //showtheresultsinanotherplace--<divid="resultCanvas">
    //SearchControlObjectusedtocreateasearchservicewhichwillincludealocalsearchservice                  
  varsearchControl=newgoogle.search.SearchControl(null);
  searchControl.addSearcher(localSearch,searcherOptions); 
  searchControl.addSearcher(newgoogle.search.WebSearch());
  searchControl.addSearcher(newgoogle.search.NewsSearch());
  searchControl.addSearcher(newgoogle.search.BlogSearch());
  //drawoptionsandsetittoatabbedview,
  vardrawOptions=newgoogle.search.DrawOptions();
  drawOptions.setDrawMode(google.search.SearchControl.DRAW_MODE_TABBED)
  //makethesearchControlreturnaresult:GResult
  searchControl.setOnKeepCallback(this,LocalSearchKeepHandler);//keepingasearchresult
  //thisoptionisusedtosetthesearchboxpositioninaDOMtree.
  //drawOptions.setSearchFormRoot(document.getElementById("drawOptions"));
  //settheinputboxtoauserdefinedelement 
  //drawOptions.setInput(document.getElementById("input"));
  //tellthesearchboxtodrawitselfandtellitwheretoattach
 // searchControl.draw(document.getElementById("searchBox"),drawOptions);//HereIchangedfromaddressandtoaddresstosearch,anewplace
  //anotheruserdefinedinputbox
  drawOptions.setInput(document.getElementById("input2"));
  searchControl.draw();
  /**ThecodesbelowisaboutgoogleAjaxMapSearchAPI
  //thiscodesegmentisusedtoaddasidebartoshowtheresultsofthesearch
  //Iwonderwhyno"var"existshere
   optinos=newObject();
   options.resultList=resultCanvas;
   options.resultFormat="multi-line1";
   varlsc2=newgoogle.elements.LocalSearch(options);
   map.addControl(lsc2,newGControlPosition(G_ANCHOR_TOP_LEFT,newGSize(-282,-2)));
   */
       }
 google.setOnLoadCallback(initialize);