Die Google Places API bietet eine radarSearch method, die einen einzelnen Typ und eine Bereichsbeschränkung akzeptiert. Die Fläche kann entweder ein Constraint latlng/Radius-Paar oder eine latlng Grenzen ...Google Places radarSuchen Sie, um 100 Orte zu finden
var request = {
location: latlng, // where latlng is a google.maps.LatLng
radius: 2000, // meters
type: placeType // e.g. 'restaurant' or 'gas_station', etc.
}
oder
var request = {
bounds: latlngbounds, // google.maps.LatLngBounds
type: placeType // e.g. 'restaurant' or 'gas_station', etc.
}
A radarSearch entweder mit den oben genannten Anfragen sein kehren bis zu 200 passenden Stellen. Wenn die Suche tatsächlich 500 Orten entspricht, sind nur 200 Orte der 500 Orte in der Antwort enthalten. Es scheint keine offensichtliche Möglichkeit zu geben, zu beeinflussen, welche 200 Orte zurückgegeben werden. Erste Tests zeigen, dass es zufällig ist, aber vielleicht voreingenommen, um die Orte zurückzubringen, die am weitesten vom Zentrum entfernt sind.
Das Problem ist ... Ich bin nur an der am nächsten 100 Plätze interessiert. Gibt es eine unterstützte Möglichkeit, die 500 übereinstimmenden Orte zu sortieren und die ersten 200 zurückzugeben? Ich habe versucht, die ‚rankBy‘ Eigenschaft verwenden, aber es scheint, um ignoriert zu werden ...
var request = {
bounds: latlngbounds, // google.maps.LatLngBounds
type: placeType // e.g. 'restaurant' or 'gas_station', etc.
rankby: google.maps.places.RankBy.DISTANCE,
}
Der einzige Weg, eine richtige Antwort, um sicherzustellen, ist eine erste Suche mit einem kleinen Bereich zu tun, und erhöhe nacheinander die Grenzen und re-search, bis ich mindestens 100 Plätze, aber nicht mehr als 200 Plätze bekomme. Dann kann ich in JS sortieren und bis 100 schneiden, um meine 100 nächsten Plätze zu bekommen. Gibt es einen performanteren Algorithmus, um zu den gleichen Ergebnissen zu gelangen?
Google hat kürzlich die 'types' Eigenschaft, in der man ein Array von mehreren passenden Typen angeben könnte, veraltet. Derzeit wird nur die Eigenschaft 'type' unterstützt, in der nur ein einziger Suchtyp angegeben werden kann. Ich muss eine Handvoll von Ortstypen unterstützen und muss nun individuelle Suchen für jeden Ortstyp durchführen und zusammenführen. Diese Änderung wirkt sich dramatisch auf die Leistung meiner App aus. Mit dem obigen Ansatz dauerte es zwischen 1 bis 3 Sekunden für eine Handvoll von Ortstypen, bis zu nicht akzeptablen 20 bis 30 Sekunden, um individuelle Suchen für jeden Ortstyp durchzuführen.
Gibt es bessere Möglichkeiten, um beispielsweise die nächsten 100 Bars, Restaurants oder Cafes zu erreichen? Mit der Änderung von Google dauert es jetzt 10x länger, um das Ergebnis zu erhalten.
Schätzen Sie alle Ideen!