Google 提供了一个基于javascript的本地搜索的API,我们可以通过这个API来嵌入到我们的应用程序中,实现搜索的功能。如javascrtip,Flash,java等。
此接口返回的数据为JSON格式的数据,可以方便进行解析。
Google Local Search API首页地址是:
http://code.google.com/intl/zh-CN/apis/maps/documentation/localsearch/index.html
以下是一个简单的例子:
1
<
DOCTYPE
html
>
2 < html xmlns ="http://www.w3.org/1999/xhtml" >
3 < head >
4 < meta http-equiv ="content-type" content ="text/html; charset=utf-8" />
5 < title > Google Search API Sample </ title >
6 < script src ="http://www.google.com/jsapi?key=INSERT-YOUR-KEY" ></ script >
7 < script type ="text/javascript" >
8 // This code generates a "Raw Searcher" to handle search queries. The Raw Searcher requires
9 // you to handle and draw the search results manually.
10 google.load( ' search ' , ' 1 ' );
11
12 var localSearch;
13 function searchComplete() {
14
15 // Check that we got results
16 document.getElementById( ' content ' ).innerHTML = '' ;
17 if (localSearch.results && localSearch.results.length > 0 ) {
18 for ( var i = 0 ; i < localSearch.results.length; i ++ ) {
19
20 // Create HTML elements for search results
21 var p = document.createElement( ' p ' );
22 var a = document.createElement( ' a ' );
23 var b = document.createElement( ' b ' );
24 var c = document.createElement( ' c ' );
25 a.href = localSearch.results[i].url;
26 a.innerHTML = localSearch.results[i].title;
27 b.innerHTML = " <br> " +
28 localSearch.results[i].streetAddress;
29 c.innerHTML = " <br> " +
30 localSearch.results[i].city + " , " +
31 localSearch.results[i].region;
32
33 // Append search results to the HTML nodes
34 p.appendChild(a);
35 p.appendChild(b);
36 p.appendChild(c);
37 document.body.appendChild(p);
38 }
39 }
40 }
41
42 function onLoad() {
43
44 // Create a LocalSearch instance.
45 localSearch = new google.search.LocalSearch();
46
47 // Set the Local Search center point
48 localSearch.setCenterPoint( " New York, NY " );
49
50 // Set searchComplete as the callback function when a search is complete. The
51 // localSearch object will have results in it.
52 localSearch.setSearchCompleteCallback( this , searchComplete, null );
53
54 // Specify search quer(ies)
55 localSearch.execute( ' coffee New York NY ' );
56
57 // Include the required Google branding.
58 // Note that getBranding is called on google.search.Search
59 google.search.Search.getBranding( ' branding ' );
60 }
61
62 // Set a callback to call your code when the page loads
63 google.setOnLoadCallback(onLoad);
64
65 </ script >
66 </ head >
67 < body style ="font-family: Arial;border: 0 none;" >
68 < div id ="branding" style ="float: left;" ></ div >< br />
69 < div id ="content" > Loading... </ div >
70 </ body >
71 </ html >
2 < html xmlns ="http://www.w3.org/1999/xhtml" >
3 < head >
4 < meta http-equiv ="content-type" content ="text/html; charset=utf-8" />
5 < title > Google Search API Sample </ title >
6 < script src ="http://www.google.com/jsapi?key=INSERT-YOUR-KEY" ></ script >
7 < script type ="text/javascript" >
8 // This code generates a "Raw Searcher" to handle search queries. The Raw Searcher requires
9 // you to handle and draw the search results manually.
10 google.load( ' search ' , ' 1 ' );
11
12 var localSearch;
13 function searchComplete() {
14
15 // Check that we got results
16 document.getElementById( ' content ' ).innerHTML = '' ;
17 if (localSearch.results && localSearch.results.length > 0 ) {
18 for ( var i = 0 ; i < localSearch.results.length; i ++ ) {
19
20 // Create HTML elements for search results
21 var p = document.createElement( ' p ' );
22 var a = document.createElement( ' a ' );
23 var b = document.createElement( ' b ' );
24 var c = document.createElement( ' c ' );
25 a.href = localSearch.results[i].url;
26 a.innerHTML = localSearch.results[i].title;
27 b.innerHTML = " <br> " +
28 localSearch.results[i].streetAddress;
29 c.innerHTML = " <br> " +
30 localSearch.results[i].city + " , " +
31 localSearch.results[i].region;
32
33 // Append search results to the HTML nodes
34 p.appendChild(a);
35 p.appendChild(b);
36 p.appendChild(c);
37 document.body.appendChild(p);
38 }
39 }
40 }
41
42 function onLoad() {
43
44 // Create a LocalSearch instance.
45 localSearch = new google.search.LocalSearch();
46
47 // Set the Local Search center point
48 localSearch.setCenterPoint( " New York, NY " );
49
50 // Set searchComplete as the callback function when a search is complete. The
51 // localSearch object will have results in it.
52 localSearch.setSearchCompleteCallback( this , searchComplete, null );
53
54 // Specify search quer(ies)
55 localSearch.execute( ' coffee New York NY ' );
56
57 // Include the required Google branding.
58 // Note that getBranding is called on google.search.Search
59 google.search.Search.getBranding( ' branding ' );
60 }
61
62 // Set a callback to call your code when the page loads
63 google.setOnLoadCallback(onLoad);
64
65 </ script >
66 </ head >
67 < body style ="font-family: Arial;border: 0 none;" >
68 < div id ="branding" style ="float: left;" ></ div >< br />
69 < div id ="content" > Loading... </ div >
70 </ body >
71 </ html >
其中最重要的是调用这个地址:
http://ajax.googleapis.com/ajax/services/search/local?v=1.0&q=Palm%20Springs%20CA
两个必须的参数如下:
v:版本号,如1.0
q:搜索的关键字
还有一些其它常可以用到的参数:
key:搜索的时候,需要验证的key值,这个你必须到google上去申请
sll:中心坐标,你可以指定一个坐标为中心进行搜索
rsz:每页显示几条数据,值为1-8,当然,每次搜索最大记录数为64
我们来看看常见的几种语言是如何来使用的:
使用Flash
var service:HTTPService
=
new
HTTPService();
service.url = ' http://ajax.googleapis.com/ajax/services/search/local ' ;
service.request.v = ' 1.0 ' ;
service.request.q = ' Palm%20Springs%20CA ' ;
service.request.key = ' INSERT-YOUR-KEY ' ;
service.resultFormat = ' text ' ;
service.addEventListener(ResultEvent.RESULT, onServerResponse);
service.send();
private function onServerResponse(event:ResultEvent): void {
try {
var json:Object = JSON.decode(event.result as String);
// now have some fun with the results...
} catch (ignored:Error) {
}
}
service.url = ' http://ajax.googleapis.com/ajax/services/search/local ' ;
service.request.v = ' 1.0 ' ;
service.request.q = ' Palm%20Springs%20CA ' ;
service.request.key = ' INSERT-YOUR-KEY ' ;
service.resultFormat = ' text ' ;
service.addEventListener(ResultEvent.RESULT, onServerResponse);
service.send();
private function onServerResponse(event:ResultEvent): void {
try {
var json:Object = JSON.decode(event.result as String);
// now have some fun with the results...
} catch (ignored:Error) {
}
}
使用Java
URL url
=
new
URL(
"
http://ajax.googleapis.com/ajax/services/search/local?
"
+
" v=1.0&q=barack%20obama&key=INSERT-YOUR-KEY&userip=INSERT-USER-IP " );
URLConnection connection = url.openConnection();
connection.addRequestProperty( " Referer " , /* Enter the URL of your site here */ );
String line;
StringBuilder builder = new StringBuilder();
BufferedReader reader = new BufferedReader( new InputStreamReader(connection.getInputStream()));
while ((line = reader.readLine()) != null ) {
builder.append(line);
}
JSONObject json = new JSONObject(builder.toString());
// now have some fun with the results...
" v=1.0&q=barack%20obama&key=INSERT-YOUR-KEY&userip=INSERT-USER-IP " );
URLConnection connection = url.openConnection();
connection.addRequestProperty( " Referer " , /* Enter the URL of your site here */ );
String line;
StringBuilder builder = new StringBuilder();
BufferedReader reader = new BufferedReader( new InputStreamReader(connection.getInputStream()));
while ((line = reader.readLine()) != null ) {
builder.append(line);
}
JSONObject json = new JSONObject(builder.toString());
// now have some fun with the results...
使用PHP
$url
=
"
http://ajax.googleapis.com/ajax/services/search/local?
"
+
" v=1.0&q=barack%20obama&key=INSERT-YOUR-KEY&userip=INSERT-USER-IP " ;
// sendRequest
// note how referer is set manually
$ch = curl_init();
curl_setopt( $ch , CURLOPT_URL , $url );
curl_setopt( $ch , CURLOPT_RETURNTRANSFER , 1 );
curl_setopt( $ch , CURLOPT_REFERER , /* Enter the URL of your site here */ );
$body = curl_exec( $ch );
curl_close( $ch );
// now, process the JSON string
$json = json_decode( $body );
// now have some fun with the results...
" v=1.0&q=barack%20obama&key=INSERT-YOUR-KEY&userip=INSERT-USER-IP " ;
// sendRequest
// note how referer is set manually
$ch = curl_init();
curl_setopt( $ch , CURLOPT_URL , $url );
curl_setopt( $ch , CURLOPT_RETURNTRANSFER , 1 );
curl_setopt( $ch , CURLOPT_REFERER , /* Enter the URL of your site here */ );
$body = curl_exec( $ch );
curl_close( $ch );
// now, process the JSON string
$json = json_decode( $body );
// now have some fun with the results...
今天先介绍到这里,以后我会更详细的进行简介一下。
下面是我用Flex做的一个示例,结合了Google Map,支持关键字搜索,并可以导出结果。
再次申明,程序只用于学习使用,请不要用于商业。需要安装Flash AIR