Levei dois dias para usar a API do Google para fazer algo tão pequeno. Na verdade, o código de implementação real não é muito, apenas uma dúzia de linhas. O trabalho demorado é entender as funções de cada API e depurar JavaScript.
Vamos apresentar brevemente algumas das funções que usei desta vez.
•Construtor google.search.LocalSearch()
Na verdade, isso cria um serviço LocalSearch. Este serviço, como outros serviços (notícias, blog, web), é usado pelo SearchControl. Esses serviços determinam os recursos do SearchControl.
•Definir o tipo de estrutura de pesquisa de LocalSearch
localSearch.setRestriction(google.search.Search.RESTRICT_TYPE, google.search.LocalSearch.TYPE_KMLONLY_RESULTS)
Isso mostra que não há resultados comerciais nos resultados da pesquisa, apenas resultados de kml e geocódigo.
•Definir o escopo de pesquisa do LocalSearch
localSearch.setCenterPoint("Pequim");
•google.search.SearcherOptions()
Defina as propriedades do Search Service (Searcher) e utilize-as como um atributo de SearchControl.addSearcher().
1. Defina o método de exibição dos resultados
•searcherOptions.setExpandMode(google.search.SearchControl.EXPAND_MODE_OPEN);
2. O texto exibido quando não há resultados de pesquisa no perfil
• searcherOptions.setNoResultsString(google.search.SearchControl.NO_RESULTS_DEFAULT_STRING);
3. Defina o local onde os resultados serão exibidos
•searcherOptions.setRoot(resultCanvas);
•novo google.search.DrawOptions();
Defina como o Controle de Pesquisa do Google é exibido
•drawOptions.setDrawMode(google.search.SearchControl.DRAW_MODE_TABBED)
Defina o modo de exibição para modo de guias, ou seja, cada Pesquisador é exibido como guias
•drawOptions.setInput(document.getElementById("entrada"));
Altere o valor padrão da caixa de entrada de pesquisa para uma caixa de entrada definida pelo usuário
Retorne os resultados da pesquisa selecionados pelo usuário como um objeto GResult correspondente. Por exemplo, o GResult de LocalSearch é um GLocalResult.
Demorei muito para encontrar essa opção. Há dois motivos: primeiro, há poucas pessoas que a utilizam e há poucos documentos. Em segundo lugar, demorei muito para entender o documento em inglês que li. Na verdade, demorei mais para ler o documento em chinês, eu acho.
•searchControl.setOnKeepCallback(este, LocalSearchKeepHandler);
A propósito, cole o código do LocalSearchKeepHandler, cujo parâmetro é o objeto GResult retornado automaticamente.
Copie o código do código da seguinte forma:
função LocalSearchKeepHandler(resultado) {
var from = document.getElementById("de");
alerta("resultado.tilte = " + resultado.título);
from.value = ProcessString(resultado.title);
alerta("de.valor = " + de.valor);
//alert(resultado.título);
}
Basta postar este código na íntegra para facilitar a leitura.
Copie o código do código da seguinte forma:
google.load("pesquisar", "1", {"idioma": "zh-CN"});
função inicializar() {
//Objeto LocalSearch usado para criar um serviço de pesquisa local para os mapas
var localSearch = new google.search.LocalSearch();
//restringe os resultados da pesquisa local apenas aos resultados de kml e geocódigo, sem resultados comerciais
localSearch.setRestriction(google.search.Search.RESTRICT_TYPE, google.search.LocalSearch.TYPE_KMLONLY_RESULTS);
// Define o ponto central da Pesquisa Local
localSearch.setCenterPoint("Pequim");
//Trata-se de busca local, que serve para definir onde os resultados aparecerão, um parâmetro de opções
var resultCanvas = document.getElementById("resultCanvas");
//opções: abrir, raiz alternativa
var searcherOptions = new google.search.SearcherOptions();
//mostra muitos resultados
searcherOptions.setExpandMode(google.search.SearchControl.EXPAND_MODE_OPEN);
//nenhuma mensagem de resultados
searcherOptions.setNoResultsString(google.search.SearchControl.NO_RESULTS_DEFAULT_STRING);
//options.setDrawMode(google.search.SearchControl.DRAW_MODE_TABBED);//web, local... em uma guia exibida
searcherOptions.setRoot(resultCanvas);//mostra os resultados em outro lugar--<div id="resultCanvas">
//Objeto SearchControl usado para criar um serviço de pesquisa que incluirá um serviço de pesquisa local
var searchControl = novo google.search.SearchControl(null);
searchControl.addSearcher (localSearch, searcherOptions);
searchControl.addSearcher(novo google.search.WebSearch());
searchControl.addSearcher(novo google.search.NewsSearch());
searchControl.addSearcher(novo google.search.BlogSearch());
//desenha opções e configura-as para uma visualização com guias,
var drawOptions = new google.search.DrawOptions();
drawOptions.setDrawMode(google.search.SearchControl.DRAW_MODE_TABBED)
//faz com que o searchControl retorne um resultado:GResult
searchControl.setOnKeepCallback(this, LocalSearchKeepHandler);//mantendo um resultado de pesquisa
//Esta opção é usada para definir a posição da caixa de pesquisa em uma árvore DOM.
//drawOptions.setSearchFormRoot(document.getElementById("drawOptions"));
//define a caixa de entrada para um elemento definido pelo usuário
//drawOptions.setInput(document.getElementById("input"));
// diz à caixa de pesquisa para se desenhar e onde anexar
//searchControl.draw(document.getElementById("searchBox"), drawOptions);//Aqui mudei fromaddress e toaddress para pesquisar, um novo local
//outra caixa de entrada definida pelo usuário
drawOptions.setInput(document.getElementById("input2"));
searchControl.draw();
/** Os códigos abaixo são sobre a API Google Ajax Map Search
//este segmento de código é usado para adicionar uma barra lateral para mostrar os resultados da pesquisa
//Eu me pergunto por que não existe 'var' aqui
optinos = novo Objeto();
options.resultList=resultCanvas;
options.resultFormat = "multilinha1";
var lsc2 = novo google.elements.LocalSearch(opções);
map.addControl(lsc2, novo GControlPosition(G_ANCHOR_TOP_LEFT, novo GSize(-282, -2)));
*/
}
google.setOnLoadCallback(inicializar);