Wie kann ich nicht genaue Orte auf einer Karte haben?

7

Ich verwende GMap, um Benutzern zu helfen, andere Personen in ihrer Nähe zu finden. Ich möchte den Benutzern jedoch einen gewissen Datenschutz gewähren, indem sie nur ihre Stadt und Postleitzahl auf der Karte verfügbar machen, aber dennoch die vollständige Adresse für Mailingzwecke in der Datenbank haben. Wie kann ich das machen? Die Position des Pins auf der Karte sollte auch nur auf Stadt und Postleitzahl basieren, da dies natürlich ziemlich genau sein kann.

Nehmen wir zum Beispiel an, der Präsident registriert sich auf unserer Website. Er gibt seine vollständige Adresse ein, 1600 Pennsylvania Ave NW, Washington DC, DC 20500. Ein Administrator kann diese jetzt nachschlagen und ihm unseren Newsletter zusenden.

Ein anderer Benutzer im DC-Bereich sucht nach Personen, mit denen er sich treffen kann. Sie suchen und sehen eine Stecknadel auf der Karte für einen Benutzer POTUS. Wenn Sie auf den Pin klicken, wird nur eine Teiladresse angezeigt, Washington DC, DC 20500. Und die Position des Pins ist nicht genau, sodass der Benutzer anhand seiner Platzierung die genaue Adresse von POTUS nicht erkennen kann. Es reicht jedoch aus, dass der Benutzer weiß, dass er sich in der Nähe befindet, sodass er eine Nachricht an den Benutzer sendet, um Kontakt aufzunehmen.

Alle Lösungen für nicht exakte Pin-Positionen wären in Ordnung. Wenn es leicht randomisiert war. Oder vielleicht sind alle Pins in einer Postleitzahl zu einem mit einem Link für "# Benutzer im Bereich 20500" zusammengefasst, der den Benutzer zu einer vollständigen Liste führt.

Wenn dies mit etwas anderem als GMap möglich ist, ist das in Ordnung.

Rob Mosher
quelle

Antworten:

6

Ich hatte ein ähnliches Problem und habe es so gelöst:

  1. Fügen Sie Ihrem Inhaltstyp ein weiteres Feld "Standort" hinzu. Nennen Sie es z. B. "öffentlicher Benutzerstandort".
  2. Erstellen Sie Ihr benutzerdefiniertes Modul und blenden Sie in der hook_form_alter()Implementierung das neue Speicherortfeld aus, damit der Benutzer es nicht bearbeiten kann.
  3. Jetzt müssen Sie den 'nicht genauen' Ort für den ersten Ort ermitteln. Ich mache das mit einem Google Geocode.

Es liegt an Ihnen, dies über JavaScript zu tun, wenn der erste Speicherort festgelegt ist (so wie ich es mache), oder die Geolokalisierung durchzuführen, wenn das Formular gesendet wird, um den nicht genauen Speicherort manuell hinzuzufügen.

Wenn Sie für die Teiladresse einen Geocode verwenden, gibt Ihnen Google Geocode die Koordinaten in der Mitte des gesuchten Bereichs.

Bitte beachten Sie, dass Sie für eine spezifischere Geokodierung sogar die Geonames-API verwenden können .

Wenn Sie den zweiten Weg wählen (erstellen Sie den "nicht genauen" Speicherort, wenn das Formular gesendet wird), kann dies möglicherweise bei der Standorterstellung hilfreich sein: Programmgesteuertes Erstellen von Knoten in Drupal (einschließlich cck- und Standortfelder) .

Nebenbei bemerkt, ich verwende das Gmap-Modul nicht mehr, da meine Anforderungen etwas komplex waren und von diesem Modul nicht erfüllt wurden. Wenn Sie Probleme haben, empfehlen wir Ihnen, Ihr eigenes kleines Modul mit der Google API v3 zu erstellen.

Auf diese Weise können Sie beispielsweise den "öffentlichen Ort" in der Karte mit einem Kreis um anzeigen, wie dies bei Google Latitude der Fall ist.

Strae
quelle
1

Dieser Pin auf der Karte ist das Zentrum (normalerweise das geometrische Zentrum) der Postleitzahl (mit wenigen Ausnahmen, z. B. eine Postleitzahl, die sich nur auf ein einzelnes Gebäude bezieht).

Oder vielleicht sind alle Pins in einer Postleitzahl zu einem mit einem Link für "# Benutzer im Bereich 20500" zusammengefasst, der den Benutzer zu einer vollständigen Liste führt.

Dies ist eine bessere Lösung, als 20 Pins in der Mitte der Postleitzahl 20500 übereinander zu legen.

Tangurena
quelle