Gesamtanzahl der "Bereiche / Zonen", in denen ich mich gerade befinde, basierend auf dem aktuellen Standort

8

Nehmen wir an, wir haben drei Hotels: Hotel A (beliebt in 1 km Umkreis), Hotel B (beliebt in 2 km Umkreis) und Hotel C (beliebt in 4 km Umkreis) . Ein Auto tritt ein und ist an einer bestimmten Position. Diese Hotels (oder jeder andere Ort) wird von uns hinzugefügt und ist individuell.

Problem ist, dass ich die Hotels finden möchte, die an meinem derzeitigen Standort Popularität / Einfluss haben.

Und ich möchte, dass es vollständig mit Google Maps funktioniert. Ist es machbar ? auf Android (optional) ? Bitte ELI5 .

    
Aexyn 08.09.2016, 13:34
quelle

3 Antworten

2

Google Maps API hat eine Funktion namens computeDistanceBetween . Es "gibt die Entfernung in Metern zwischen zwei Längen- / Breitenkoordinaten zurück". Kreis hat die Eigenschaften "Mittelpunkt" und "Radius". Sie müssen also den Abstand zwischen dem Mittelpunkt eines Kreises und Ihrem aktuellen Standort berechnen. Wenn es kleiner als der Radius des Kreises ist, bedeutet dies, dass sich Ihre aktuelle Position innerhalb des Kreises befindet.

    
anatoly.sukhanov 09.09.2016 11:02
quelle
1

Vereinfachung ist der Schlüssel

Obwohl ich Ihr Ziel verstehe (eine Liste aller Hotels in Ihrer Nähe), glaube ich, dass Ihre Erklärung viele Leute unvorbereitet getroffen hat. Sie müssen keine Positionen triangulieren und den Radius von Kreisen berechnen - nicht mit den Google Maps-APIs und -Diensten.

Alles, was Sie wissen müssen, ist, ob Sie eine Lösung für Front-End, Back-End oder Mobile wollen.

Google Maps Places-API-Webdienst (Back-End)

Die Places API hat eine sehr nützliche Funktion namens "Orte in der Nähe". Um die Dokumentation dieses Features zu zitieren:

  

Mit der Suche in der Nähe können Sie nach Orten innerhalb eines bestimmten Bereichs suchen.   Sie können Ihre Suchanfrage verfeinern, indem Sie Schlüsselwörter angeben oder angeben   die Art des Ortes, nach dem du suchst.

Was genau wie das aussieht, was Sie brauchen, oder?

Um eine Anfrage von einem Server an den Places-API-Webdienst zu stellen, der nach Orten in der Nähe sucht, können Sie Folgendes tun:

%Vor%

Denken Sie daran, key=YOUR_API_KEY in ein gültiges Schlüsselfeld zu ändern. Das Beispiel zeigt Restaurants in einem Umkreis von 500 Metern um den Standort -33.8670522,151.1957362.

Es gibt viele Parameter dazu und Sie können mehr darüber in der folgenden Dokumentation lesen

Ссылка

Google Maps-JavaScript-API mit Places-Bibliothek (Front-End)

Wenn Sie jedoch keinen zentralen Server oder Dienst haben, um Anfragen für Sie zu stellen, ist es auch möglich, die Clients direkt die Anfragen senden zu lassen.

In diesem Fall gibt es die JavaScript-API. Die JavaScript-API ist eine clientseitige, benutzerfreundliche API, die einige der Funktionen des Web-Service erneut verwendet.

In diesem Fall können Sie die JavaScript API in Verbindung mit der Places Library dafür verwenden. Gemäß der Dokumentation können Sie mit dieser API "Suchanfragen in der Nähe" ausführen:

  

Bei einer Suche in der Nähe können Sie nach Orten in einem bestimmten Gebiet suchen   Schlüsselwort oder Typ

Ein Beispiel für eine solche Anfrage finden Sie in einem Live-Beispiel im folgenden Link Ссылка

Sie können mehr über die Parameter und die Verwendung dieser API und dieser Bibliothek in der folgenden Dokumentation Ссылка

Google Maps Android API (mobil)

Aus dem Bild, das Sie hinzugefügt haben, gehe ich davon aus, dass Ihre App " unterwegs verwenden " (möglicherweise eine mobile App) oder etwas Ähnliches sein wird.

In diesem Szenario könnte die Verwendung eines Webservers oder einer Website mühsam sein, da das Auto bereits zu einer anderen Position ist, wenn Sie eine Antwort darauf erhalten haben!

Um Ihnen dabei zu helfen, gibt es auch die Android API. Um es zu verwenden, müssen Sie:

  1. Herunterladen und Installieren von Android Studio
  2. Fügen Sie das Google Play-Dienstepaket hinzu (enthält die von Ihnen verwendeten APIs)

Sie können mehr über diesen Prozess hier Ссылка

lesen

Wie für Code und Beispiele, empfehle ich Ihnen dringend, dieses GitHub-Repository von Proben zu überprüfen Ссылка

Unsere Hotels erscheinen möglicherweise nicht in Google Maps

Wenn Ihr DeLorean Sie nicht in die zweite Hälfte des 19. Jahrhunderts zurückbringt oder Sie stecken auf einer Insel mit Hunderten von Erdmännchen, giftigen Lachen und einem Tiger, der sich fragt, ob er Sie essen soll oder nicht, Google Maps wird es immer tun zeigen Sie einige Hotels, in denen Sie die Nacht verbringen können.

PS: kudos ++ wenn jemand meine Referenzen bekommt: P

Hinzufügen von Hotels und Orten zu Google Maps-APIs und -Diensten

Wenn dies jedoch immer noch nicht genug ist, gibt es immer noch einen Weg, wie Sie es beheben können. Sie können Hotels Adressen und Orte zu Google Maps hinzufügen, indem Sie eins für die beiden folgenden Methoden verwenden:

  • Feedback senden
  • Verwenden Sie Maps Maker

Rückmeldung senden

Mit der Funktion "Feedback senden" können Sie Feedback an die Datenteams von Google zur Überprüfung senden. Nach der Genehmigung werden die Daten der Google-Datenbank hinzugefügt und stehen allen Kunden von Google zur Verfügung. Sie können dies tun, indem Sie die hier beschriebenen Schritte Ссылка

Bitte beachten Sie jedoch, dass der Überprüfungsprozess für Ihr Feedback einige Zeit in Anspruch nehmen wird. Erwarten Sie daher nichts unmittelbares!

Verwenden Sie Maps Maker

Alternativ können Sie Maps Maker verwenden. Mit diesem Tool können Sie Bearbeitungen vornehmen und Informationen zu unseren Services in einer optimierten Weise hinzufügen.

Zunächst werden Ihre Änderungen und Vorschläge noch überprüft und es dauert in der Regel weniger als zwei Wochen, bis Sie eine Genehmigung erhalten.

Mit der Zeit jedoch, wenn mehr und mehr von Ihnen vorgeschlagen werden, gewinnen Sie an Reputation, und wenn Sie viel Reputation haben, werden Ihre Vorschläge ziemlich automatisch hinzugefügt.

Bevor Sie es jedoch verwenden, sehen Sie sich die Liste der unterstützten Länder an .

Wenn Sprache wichtig ist, sollten Sie sie ebenfalls berücksichtigen, indem Sie die Liste der unterstützte Sprachen .

Ich möchte wirklich nichts zu Google Maps hinzufügen

Manchmal sind das ganze Geschäft Daten selbst, es ist also keine Option, es frei zu geben.

In diesen Fällen haben Sie eine eigene Datenbank, die Ihre Dienste überprüfen müssen.

In solchen Fällen ist eine benutzerdefinierte Lösung für Ihr System erforderlich, aber um weitere Ideen vorzuschlagen, sind weitere Informationen erforderlich.

Ich hoffe, es hilft!

    
Flame_Phoenix 13.09.2016 14:47
quelle
1

Ihr Ansatz sollte schnelle Näherungsberechnungen verwenden, ohne auf API angewiesen zu sein, und dann kann die API-Nutzung verwendet werden, um die Benutzererfahrung zu verbessern.

  • Sie kennen die Koordinaten des Autos.
  • Sie kennen die Koordinaten jedes Hotels.
  • Weisen Sie jedem Hotel auf Grundlage Ihrer Kriterien oder Daten, die Sie haben, ein Beliebtheitsgewicht zu. B. ein Hotel mit mehr Nutzerbewertungen oder Transaktionen oder Buchungen einen höheren Einfluss haben, oder wenn Sie personalisieren möchten, hat ein Hotel, das den Budgeteinstellungen des eingeloggten Nutzers entspricht (basierend auf vergangenen Daten oder Einstellungen), einen höheren Einfluss. Lassen Sie uns diesen Popularitätswert p1, p2..p3 usw. nennen.

  • Finden Sie alle Hotels, die innerhalb eines Schwellenbereichs liegen, sagen Sie 5 km innerhalb der aktuellen Position des Autos. Dies kann mit einer Geospatial-Abfrage in einer großen Speicher-Datenbank geschehen (zum Beispiel wenn Ihre Hotelpunkte in MySQL oder mongodb gespeichert sind), oder wenn Sie eine Hoteldaten-API verwenden, erhalten Sie die Hotels in der Nähe oder alle Hotels dieser Stadt, und beschneiden sie basierend auf der Entfernung vom aktuellen Standort des Autos.

  • Für lineare Entfernung zwischen dem Auto C und den Hotels H1, H2 .. . Benutze Haversine Formel , dies wird dir Distanz zwischen dem Auto und jedem Hotel entlang der Erdkrümmung geben. (Die tatsächliche Straßenentfernung kann variieren, da die Straßen nicht gerade sind und Kurven usw. beinhalten). Aber dies wird Ihnen eine schnelle Annäherung der Abstände D1 zwischen C & amp; H1, D2 zwischen C & amp; H2 usw. ...

  • Jetzt Zerfall der Beliebtheitsscore P1 ... PN jedes Hotels, basierend auf der Entfernung zwischen dem Car C und dem Hotel H . Zum Beispiel, wenn das Hotel H1 den Beliebtheitsgrad P1 = 90 hat und das Hotel H2 den Beliebtheitsgrad P2 = 90 hat, aber C & lt; --- & gt; Der Abstand H1 beträgt 10 km und der Abstand C & lt; --- & gt; H2 beträgt 2 km. dann hat H2 mehr Einfluss auf den aktuellen Standort als H1. Eine einfache Formel kann LocationInfluence = PopularityScore/ log(Distance) sein, Sie können dies basierend auf Ihrem Anwendungsfall optimieren.

  • Nun zu den einflussreichsten Hotels H1, H2, H3 ... verwenden Sie DistanceMatrix api, um die tatsächliche Entfernung zu finden, können Sie auch google maps directions api für Android oder Javascript verwenden, um anzuzeigen Wegbeschreibung zum Benutzer, vom Standort bis zum Hotel.

DhruvPathak 16.09.2016 09:12
quelle