Il 28 giugno 2012, Google ha integrato lo GeoPoint class nella libreria dell'API di ricerca di Google App Engine con l'intento specifico di rendere ricercabili i punti spaziali.
I punti geografici sono memorizzati come campi geografici all'interno del documento di ricerca. Google fornisce this support documentation che illustra l'utilizzo di GeoPoint con l'API di ricerca.
L'esempio seguente dichiara un GeoPoint e lo assegna a un GeoField in un documento di ricerca. Queste nuove classi forniscono un più funzionalità molto di quello che è elencato di seguito, ma questo codice è un punto di partenza per una conoscenza di base di come utilizzare la nuova funzionalità di ricerca spaziale ..
Costruzione di un documento con un GeoPoint associato
## IMPORTS ##
from google.appengine.api import search
def CreateDocument(content, lat, long):
geopoint = search.GeoPoint(lat, long)
return search.Document(
fields=[
search.HtmlField(name='content', value=content),
search.DateField(name='date', value=datetime.now().date())
search.GeoField(name='location', value=geopoint)
])
Ricerca campo documento GeoPoint (leggermente modificato dalla documentazione Search API)
## IMPORTS ##
from google.appengine.api import search
ndx = search.Index(DOCUMENT_INDEX)
loc = (-33.857, 151.215)
query = "distance(location, geopoint(-33.857, 151.215)) < 4500"
loc_expr = "distance(location, geopoint(-33.857, 151.215))"
sortexpr = search.SortExpression(
expression=loc_expr,
direction=search.SortExpression.ASCENDING, default_value=4501)
search_query = search.Query(
query_string=query,
options=search.QueryOptions(
sort_options=search.SortOptions(expressions=[sortexpr])))
results = index.search(search_query)
non credo ci sia ag ood rispondere a questo. Al momento, l'API di ricerca si trova in uno stato sperimentale. Ho cercato attraverso la documentazione e il codice di esempio (http://goo.gl/Yb7n1). Non ci sono molte informazioni disponibili che risolvono questa funzionalità o ti permettono di costruire un buon meccanismo per risolvere questo problema. Ti consiglio di verificare la pagina del tracker dei problemi dell'API di ricerca (http://goo.gl/LczvP). Qualcuno ha richiesto questa funzionalità ed è attualmente classificato # 3 (http://goo.gl/SIDqA) nell'elenco dei problemi. – RLH
Lo penso anch'io, ma non ne ero sicuro. Il Google IO talk è in qualche modo fuorviante, c'è [menzione di GeoPoint] (http://youtu.be/7B7FyU9wW8Y?t=12m30s) ma non esiste un tale campo. Non sapevo che non fosse ancora stato rilasciato o che l'implementazione dell'API fosse cambiata. –