Ich habe zwei Tage gebraucht, um mit der Google-API so ein kleines Ding zu erstellen. Tatsächlich ist der eigentliche Implementierungscode nicht viel, nur ein Dutzend Zeilen. Die zeitaufwändige Arbeit besteht darin, die Funktionen jeder API zu verstehen und JavaScript zu debuggen.
Lassen Sie uns kurz einige der Funktionen vorstellen, die ich dieses Mal verwendet habe.
•Konstruktor google.search.LocalSearch()
Dadurch wird tatsächlich ein LocalSearch-Dienst erstellt. Dieser Dienst wird wie andere Dienste (Nachrichten, Blog, Web) von SearchControl verwendet. Diese Dienste bestimmen die Fähigkeiten von SearchControl.
•Legen Sie den Suchstrukturtyp von LocalSearch fest
localSearch.setRestriction(google.search.Search.RESTRICT_TYPE, google.search.LocalSearch.TYPE_KMLONLY_RESULTS)
Dies zeigt, dass die Suchergebnisse keine Geschäftsergebnisse enthalten, sondern nur KML- und Geokodierungsergebnisse.
•Legen Sie den Suchbereich von LocalSearch fest
localSearch.setCenterPoint("Peking");
•google.search.SearcherOptions()
Legen Sie die Eigenschaften des Suchdienstes (Searcher) fest und verwenden Sie sie als Attribut von SearchControl.addSearcher(). Die folgenden Optionen sind verfügbar:
1. Legen Sie die Anzeigemethode der Ergebnisse fest
•searcherOptions.setExpandMode(google.search.SearchControl.EXPAND_MODE_OPEN);
2. Der Text, der angezeigt wird, wenn im Profil keine Suchergebnisse vorhanden sind
• searcherOptions.setNoResultsString(google.search.SearchControl.NO_RESULTS_DEFAULT_STRING);
3. Legen Sie den Ort fest, an dem die Ergebnisse angezeigt werden
•searcherOptions.setRoot(resultCanvas);
•new google.search.DrawOptions();
Legen Sie fest, wie Google Search Control angezeigt wird
•drawOptions.setDrawMode(google.search.SearchControl.DRAW_MODE_TABBED)
Stellen Sie den Anzeigemodus auf den Tab-Modus ein, d. h. jeder Sucher wird wie Tabs angezeigt
•drawOptions.setInput(document.getElementById("input"));
Ändern Sie den Standardwert des Sucheingabefelds in ein benutzerdefiniertes Eingabefeld
Geben Sie die vom Benutzer ausgewählten Suchergebnisse als entsprechendes GResult-Objekt zurück. Das GResult von LocalSearch ist beispielsweise ein GLocalResult.
Es hat lange gedauert, bis ich diese Option gefunden habe. Erstens gibt es nur wenige Leute, die sie nutzen, und es gibt nur wenige Dokumente. Zweitens habe ich lange gebraucht, um das gelesene englische Dokument zu verstehen. Tatsächlich dauert es meiner Meinung nach länger, das chinesische Dokument zu lesen.
•searchControl.setOnKeepCallback(this, LocalSearchKeepHandler);
Fügen Sie übrigens den Code von LocalSearchKeepHandler ein, dessen Parameter das automatisch zurückgegebene GResult-Objekt ist.
Kopieren Sie den Codecode wie folgt:
Funktion LocalSearchKeepHandler(result) {
var from = document.getElementById("from");
alarm("result.tilte = " + result.title);
from.value = ProcessString(result.title);
alarm("from.value = " + from.value);
//alert(result.title);
}
Veröffentlichen Sie diesen Code einfach vollständig, um ihn leichter lesen zu können.
Kopieren Sie den Codecode wie folgt:
google.load("search", "1", {"sprache": "zh-CN"});
Funktion initialize() {
//LocalSearch-Objekt, das zum Erstellen eines lokalen Suchdienstes für die Karten verwendet wird
var localSearch = new google.search.LocalSearch();
//Die lokalen Suchergebnisse nur auf KML- und Geokodierungsergebnisse beschränken, keine geschäftlichen
localSearch.setRestriction(google.search.Search.RESTRICT_TYPE, google.search.LocalSearch.TYPE_KMLONLY_RESULTS);
// Den Mittelpunkt der lokalen Suche festlegen
localSearch.setCenterPoint("Peking");
//Es geht um die lokale Suche, die verwendet wird, um festzulegen, wo die Ergebnisse angezeigt werden, ein Parameter von Optionen
var resultCanvas = document.getElementById("resultCanvas");
//Optionen: offen, alternativer Root
var searcherOptions = new google.search.SearcherOptions();
//viele Ergebnisse anzeigen
searcherOptions.setExpandMode(google.search.SearchControl.EXPAND_MODE_OPEN);
//Keine Ergebnismeldung
searcherOptions.setNoResultsString(google.search.SearchControl.NO_RESULTS_DEFAULT_STRING);
//options.setDrawMode(google.search.SearchControl.DRAW_MODE_TABBED);//web, local... in einer Tab-Anzeige
searcherOptions.setRoot(resultCanvas);//zeige die Ergebnisse an einem anderen Ort an--<div id="resultCanvas">
//SearchControl-Objekt, das zum Erstellen eines Suchdienstes verwendet wird, der einen lokalen Suchdienst umfasst
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());
//Zeichne Optionen und setze es auf eine Registerkartenansicht,
var drawOptions = new google.search.DrawOptions();
drawOptions.setDrawMode(google.search.SearchControl.DRAW_MODE_TABBED)
//das searchControl dazu bringen, ein Ergebnis zurückzugeben:GResult
searchControl.setOnKeepCallback(this, LocalSearchKeepHandler);//ein Suchergebnis behalten
//Diese Option wird verwendet, um die Position des Suchfelds in einem DOM-Baum festzulegen.
//drawOptions.setSearchFormRoot(document.getElementById("drawOptions"));
//Setze das Eingabefeld auf ein benutzerdefiniertes Element
//drawOptions.setInput(document.getElementById("input"));
// Weisen Sie das Suchfeld an, sich selbst zu zeichnen und ihm mitzuteilen, wo es angehängt werden soll
//searchControl.draw(document.getElementById("searchBox"), drawOptions);//Hier habe ich von Adresse und Adresse zu Suche gewechselt, einem neuen Ort
//ein weiteres benutzerdefiniertes Eingabefeld
drawOptions.setInput(document.getElementById("input2"));
searchControl.draw();
/** Die folgenden Codes beziehen sich auf die Google Ajax Map Search API
//Dieses Codesegment wird verwendet, um eine Seitenleiste hinzuzufügen, um die Ergebnisse der Suche anzuzeigen
//Ich frage mich, warum hier keine 'var' existiert
optinos = new Object();
Optionen.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);