Wie zeichne ich einen rechteckigen Bereich auf einer großen Google Map- und Abfrage-Datenbank, um Orte / Punkte zu finden, die innerhalb des Rechtecks ​​existieren?

8

Ich habe eine Anwendung, bei der ich dem Endbenutzer eine Google-Karte präsentieren möchte und es ihnen erlauben soll, einen Bereich der Karte mit einem einfachen rechteckigen Zeichenwerkzeug auszuwählen und dann alle Orte in der Datenbank des Kunden zu speichern die fallen in diesem rechteckigen Auswahlbereich erscheinen als Punkte auf der Karte ...

Ich habe ein einfaches Verständnis von Google Maps und kann Google Maps dazu bringen, alle Standorte in der Datenbank zu plotten, ohne ein Problem ... mein Problem liegt darin, dass der Endbenutzer das Rechteck zeichnen kann. Ich bin mir nicht sicher, wie ich das umsetzen soll.

Kann mir jemand ein Beispiel erklären oder verlinken, wie es gemacht wird?

    
Ryan 06.03.2011, 20:41
quelle

3 Antworten

6

Interessante Frage. Ich liebe die Google Maps API. Hier ist ein jsFiddle mit Ihrer Lösung:

Ссылка

Sie müssen Ihre Datenbank nach Punkten zwischen dem Minimum / Maximum Lat und Ings abfragen. Hoffe, das hilft.

Bob

P.S. Beachten Sie, dass dies die natürliche Benutzererfahrung von Google Maps beeinträchtigt. Die Karte wird nicht mehr gezogen, wenn Sie die Maustaste loslassen. Es braucht eine bessere Benutzererfahrung.

    
rcravens 06.03.2011, 22:06
quelle
11

Sieht so aus, als ob diese Frage einige Monate zuvor gestellt (und beantwortet) wurde Google hat über die neuen Zeichenwerkzeuge in der v3-API gepostet ...

Ich muss sagen, dass die Verwendung der Zeichenwerkzeuge der API eine bessere Benutzererfahrung bietet als die @ rcravens-Lösung. Hier ist eine sehr spezifische Implementierung, mit der Sie einen Bereich auf der Karte "auswählen" können, indem Sie ein Rechteck oder Polygon zeichnen und dann prüfen, ob sich ein Marker in der Form befindet: Ссылка .

    
CrazyTim 26.05.2012 01:51
quelle
0

Vielleicht interessieren Sie sich für Csquares, die lat, lon in eine Textzeichenfolge codieren, die in eine indizierte Spalte eingefügt werden kann.

Ich habe die Public-Domain-Csquare-Codierungslogik nach Java und Javascript portiert.
Lass es mich wissen, wenn du es willst.

Ссылка

AUSZUG

  1. Was sind c-Quadrate und welchem ​​Zweck dient es?

C-Quadrate steht für "Concise Spatial Query and Representation System" und ist eine Methode zur Indizierung der geographischen Lage von Objekten oder von Beobachtungsdaten auf der Erdoberfläche, in einem einfachen alphanumerischen Format geeignet für die nachfolgende Abfrage durch irgendein textbasiertes System oder eine Suchmaschine. . . . Zusätzlich können c-Quadrate in einem flexiblen Bereich von Skalen definiert werden, von 10 × 10 Grad (ungefähr 1000 km) bis 5 × 5 Grad (500 km), 1 × 1 Grad (100 km), 0,5 × 0,5 Grad (50 km), 0,1 x 0,1 Grad (10 km) und so weiter, so gut es der Benutzer braucht.

  1. Wer kann von der Verwendung von C-Quadraten profitieren?

Jeder, der sich für das Speichern, Austauschen und Abrufen von Daten oder für Informationen mit einer geografischen Komponente interessiert, der nicht auf das Niveau eines ausgeklügelten geografischen Informationssystems (GIS) kommen möchte nur um ihre Datenbestände nach geographischem Standort durchsuchen zu können ...

  1. Warum nicht einfach Breiten- und Längengrade mit einem bestimmten Datenelement speichern und angeben?

Einzelne Werte von Längen- und Breitengrad können in bestimmten Fällen (georeferenzierte Objekte) gespeichert und in den meisten Fällen auch weiterhin gespeichert werden. C-Quadrate bieten eine zusätzliche Funktionalität, die über diese "nativen" Werte hinausgeht, in mehrfacher Hinsicht: (i) Das System reduziert den Breiten- und Längengrad (zweidimensionale Variable) auf eine eindimensionale Variable, um Indexierung und anschließende Suche zu erleichtern (ii) das System verringert die Redundanz für Mehrpunktdaten, die innerhalb eines einzelnen Quadrats auftreten (ein einzelner Code, der angibt, dass "vorhandene Daten" mehrere einzelne Werte ersetzen, für Metadateninformationen) ...

    
J Slick 08.12.2011 04:34
quelle