[Rails 6 / Google Map API] Veröffentlichen Sie eine Adresse und setzen Sie mehrere Markierungen auf der Karte

Einführung

Was zu machen

Es handelt sich um eine Karte, die anhand der angegebenen Adresse oder des Ortsnamens nach Breiten- und Längengraden sucht und an jedem Punkt Markierungen anbringt. (Sie können auch eine Adresse wie "1-1-2 Oshiage, Sumida-ku, Tokio" (Sky Tree) posten.) スクリーンショット 2020-08-28 1.54.39.png

Dinge vorzubereiten

Vorausgesetztes Wissen

Dieses Mal gehen wir davon aus, dass die Karte mithilfe der Google Map-API angezeigt werden kann. Wenn Sie nicht verstehen, wie eine Karte mit GoogleMapAPI angezeigt wird, lesen Sie bitte den folgenden Artikel. [[Rails 6 / Google Map API] Für Anfänger! Einfache Einführung der Google Map API mit Ruby on Rails](https://qiita.com/nagaseToya/items/e49977efb6 86ed05eadb "Informationen zur Kartenanzeige")

Funktion

Bitte bereiten Sie eine einfache Buchungsfunktion vor. Ich habe eine Kartentabelle mit einer Adressspalte zum Posten von Adressen und Ortsnamen erstellt. スクリーンショット 2020-08-29 16.41.46.png Es ist so!

fließen

  1. Fügen Sie der Kartentabelle Spalten mit Längen- und Breitengraden hinzu, um Längen- und Breitengrade zu speichern.
  2. Verwenden Sie Geocoder, um den Breiten- und Längengrad von der eingegebenen Adresse oder dem eingegebenen Ortsnamen abzurufen und in den Spalten für Breite und Länge zu speichern.
  3. Platzieren Sie eine Markierung am angegebenen Längen- / Breitengrad.

Implementierung

Wir werden es gemäß dem obigen Ablauf implementieren!

1. Spalte hinzufügen

$ rails g migration AddCoordinateToMaps latitude:float longitude:float

Erstellen Sie eine Migrationsdatei, um mit dem obigen Befehl Spalten hinzuzufügen.

$ rails db:migrate

Vergessen Sie nicht zu migrieren!

2. Holen Sie sich mit Geocoder Längen- und Breitengrade

Geocoding ――Q. Was ist Geokodierung überhaupt? ??

Übrigens hat der folgende Artikel ausführlich über Geokodierung geschrieben. Wenn Sie also mehr wissen möchten, schauen Sie bitte. Rails Geocoder and Play

Installieren Sie die erforderlichen Edelsteine

gem 'geocoder'

Schreiben Sie den obigen Code in die Gem-Datei.

$ bundle install

Lassen Sie uns Bundle Install fest machen ~! Jetzt können Sie Geocoder in Schienen verwenden.

Geokodierung für das Modell

map.rb


class Map < ApplicationRecord
    geocoded_by :address
    after_validation :geocode
end

Schreiben Sie im Teil : address die Spalte, in der Sie die Geokodierung durchführen möchten. Wenn Sie diese beiden Zeilen für ein Modell mit "Adresse", "Breite" und "Länge" beschreiben, können Sie die Breite und Länge aus der in "Adresse" eingegebenen Adresse und dem Ortsnamen abrufen und in jeder Spalte speichern. Werde es tun.

Wenn Sie auf dem Listenbildschirm "Breite" und "Länge" anzeigen, werden Breite und Länge wie unten gezeigt angezeigt.

スクリーンショット 2020-08-29 18.15.22.png

Wenn Sie jedoch eine Adresse wie "1-1-2 Oshiage, Sumida-ku, Tokio" eingeben, können Sie den Längen- und Breitengrad nicht ermitteln.

Erstellen Sie eine Konfigurationsdatei für den Geocoder

Erstellen Sie eine Konfigurationsdatei mit dem folgenden Befehl.

$ rails g geocoder:config

Eine Konfigurationsdatei mit dem Namen config / initializers / geocoder.rb wird generiert. Beschreiben Sie daher die API-Informationen von googlemap in dieser Datei.

ruby:config.initializers.geocoder.rb


Geocoder.configure(
  # Geocoding options
  timeout: 5,                 # geocoding service timeout (secs)
  lookup: :google,         # name of geocoding service (symbol)
  api_key: 'YOUR_API_KEY',               # API key for geocoding service
  units: :km,                 # :km for kilometers or :mi for miles
)

Kommentieren Sie die vier Elemente "Timeout", "Lookup", "Api_key" und "Units" in der generierten "geocoder.rb" aus und füllen Sie die erforderlichen Elemente aus, wie im obigen Code gezeigt.

Auf diese Weise kann der Geocoder auch sehr detaillierte Adressen erhalten.

3. Zeigen Sie eine Markierung an der angegebenen Position an

index.html.erb




<div id='map'></div>

<script>
  let map

    function initMap(){
      geocoder = new google.maps.Geocoder()

      map = new google.maps.Map(document.getElementById('map'), {
          center: {lat: 35.68123620000001, lng:139.7671248},
          zoom: 12,
      });


      <% @maps.each do |m| %>
          (function(){
          var contentString = "Adresse:<%= m.address %>"; 

          var marker = new google.maps.Marker({
              position:{lat: <%= m.latitude %>, lng: <%= m.longitude %>},
              map: map,
              title: contentString
          });

          })();
      <% end %>
      }
</script>
<script src="https://maps.googleapis.com/maps/api/js?key=YOUR_API_KEY&callback=initMap" async defer></script>

Wie der obige Code<% @maps.each do |m| %> ~ <% end %>Wenn Sie den Code, den Sie wiederholen möchten, in das Feld schreiben, wird an der Position der angegebenen Adresse oder des Ortsnamens eine Markierung angezeigt.

Referenzartikel

Recommended Posts

[Rails 6 / Google Map API] Veröffentlichen Sie eine Adresse und setzen Sie mehrere Markierungen auf der Karte
Zeigen Sie mehrere Markierungen auf Google Map an
[Ruby on Rails] Google Map mehrere Pins, Sprechblasen, Links
Zeigen Sie die mit Rails gem'geocoder 'eingegebene Adresse in Google Map an
[Rails] google maps api So posten und anzeigen Sie einschließlich Karteninformationen
Einführung der Google Map API mit Schienen
Gewähren Sie mit dem Befehl curl ein Zugriffstoken und POSTEN Sie die API
[Google Maps API] Karte wird nicht angezeigt und wird leer [Rails]
[Ruby on Rails] Anzeigen und Fixieren von GoolgeMAP mithilfe der Google-API
[Kartenanzeige] Zeigen Sie eine Karte anhand der vom Benutzer registrierten Adresse mit der JavaScript-API und der Geokodierungs-API von Google Maps an!
[Rails 6] Betten Sie Google Map in die App ein und fügen Sie der eingegebenen Adresse einen Marker hinzu. [Bestätigung der Details]
[Schienen] Anzeigen von Google Maps mithilfe der Google Maps-API und Suchen von Routen zwischen mehreren Punkten
[Rails] So berechnen Sie Breiten- und Längengrade mit hoher Genauigkeit mithilfe der Geocoding-API und zeigen sie auf Google Map an
Zeigen Sie die Google Maps-API mit Rails und Pin-Anzeige an
Google Drive API Dateiberechtigung festlegen (Berechtigungen für Google Drive-Dateien festlegen)
Einfache Buchregistrierung mit Google Books API und Rails
Posten Sie mit der API auf Twitter in Ihrem Konto
Anfänger der Google Maps API und der Twitter API haben "Tweet Map" erstellt.