Zeigen Sie die Google Maps-API mit Rails und Pin-Anzeige an

Einführung

Ich habe in der Vergangenheit die Google Maps-API in meinem Portfolio verwendet, aber den Ablauf vergessen, daher werde ich daran erinnert.

Umgebung

rails 5.2.3 ruby 2.6.3

Was ist diesmal zu tun?

Erstellen Sie einen Controller, der angezeigt werden soll. Diesmal lautet der Aktionsname Suche.

spaces_controller.rb


  def search
    @spaces = Space.all
  end

Nach dem Erstellen eines Modells und der Eingabe einer Adresse werden Breiten- und Längengrade automatisch erfasst.

space.rb


class Space < ApplicationRecord
  geocoded_by :address
  after_validation :geocode, if: :address_changed?
end

schema.rb


create_table "spaces", force: :cascade do |t|
    t.string "address"
    t.datetime "created_at", null: false
    t.datetime "updated_at", null: false
    t.float "latitude"
    t.float "longitude"
end

Skript zur Anzeige von MAP

javascript


  function initMap() 
    //Wo soll die Karte angezeigt werden?
    var target = document.getElementById('gmap');
    //Kartenanzeige
    var map = new google.maps.Map(document.getElementById('gmap'), {
      center: {lat: 35.681167, lng: 139.767052},//Mittelpunkteinstellung
      zoom: 8//Kartenvergrößerungseinstellung
    });

    //Erstellen einer Standortmarkierung
    //Wenn Sie Ihren aktuellen Standort nicht ermitteln können
    if(!navigator.geolocation){
      infoWindow.setPosition(map.getCenter());
      infoWindow.setContent('Geolocation wird nicht unterstützt.');
      infoWindow.open(map);
    }

    navigator.geolocation.getCurrentPosition(function(position) {
      //Ermitteln Sie den Längen- und Breitengrad Ihres aktuellen Standorts
      var pos = { lat: position.coords.latitude, lng: position.coords.longitude };
      var mark = new google.maps.Marker({
        //Dropdown-Animationseinstellungen
        animation: google.maps.Animation.DROP,
        position: pos,
        map: map,
        //Erstellen Sie ein Symbol für den aktuellen Standort-Pin. Dieses Mal wird das Standarddesign für mehrere Markierungen verwendet. Ändern Sie es daher.
        icon: {
          fillColor: "rgb(48, 255, 176)",
          fillOpacity: 1.0,
          path: google.maps.SymbolPath.BACKWARD_CLOSED_ARROW,
          scale: 4,
          strokeColor: "green",
          strokeWeight: 1.0
        }
      });
    }, function() {
      infoWindow.setPosition(map.getCenter());
      infoWindow.setContent('Error:Die Geolokalisierung ist ungültig.');
      infoWindow.open(map);
    });
    //Mehrere Marker
    //Listen Sie die Daten im JSON-Format auf
    var spaces = #{raw @spaces.to_json};
    var marker = [];
    var info;
    for(var i = 0; i < spaces.length; ++i) {
      //Erstellen Sie Markierungen, indem Sie nacheinander Längen- und Breitengradinformationen aus der Liste extrahieren
      spot = new google.maps.LatLng({lat: spaces[i].latitude, lng: spaces[i].longitude});
      marker[i] = new google.maps.Marker({
        position: spot,
        map: map,
      	animation: google.maps.Animation.DROP
      });
      markerEvent(i);
    }
    //Hover-Ereignis mit mehreren Markern
    function markerEvent(i) {
      marker[i].addListener('mouseover', function() {
        var target = $('#' + (i + 1));
        $(".highlight").removeClass("highlight");
        target.addClass("highlight");
        var position = target.offset().top - 280;
        $('body,html').animate({scrollTop:position}, 400, 'swing');
      });
    }
    //-------------------------------------------------------------
  }


script src="https://maps.googleapis.com/maps/api/js?key=#{ENV[""]}&callback=initMap" async defer

Dieses Mal ist die Template-Engine auf schlank eingestellt und direkt darin geschrieben. Seien Sie also vorsichtig, da sich die Speicherung der Datenvariablen von der üblichen unterscheidet. Es ist sehr einfach, mit dem Geocoder von gem den Längen- und Breitengrad aus dem Namen zu ermitteln, aber diesmal verwende ich Google Geocoding, da es ungenau ist und nicht einmal die Adresseinheit anzeigt.

Recommended Posts

Zeigen Sie die Google Maps-API mit Rails und Pin-Anzeige an
[Rails] google maps api So posten und anzeigen Sie einschließlich Karteninformationen
Einfache Buchregistrierung mit Google Books API und Rails
Einführung der Google Map API mit Schienen
[Google Maps API] Karte wird nicht angezeigt und wird leer [Rails]
[Ruby on Rails] Anzeigen und Fixieren von GoolgeMAP mithilfe der Google-API
[Rails] Google Maps API Beschreibung, wenn Breiten- und Längengrade nicht gespeichert werden können
[Schienen] Anzeigen von Google Maps mithilfe der Google Maps-API und Suchen von Routen zwischen mehreren Punkten
Erstellen Sie eine Tweet-Heatmap mit der Google Maps-API
[Rails] So berechnen Sie Breiten- und Längengrade mit hoher Genauigkeit mithilfe der Geocoding-API und zeigen sie auf Google Map an
Anfänger der Google Maps API und der Twitter API haben "Tweet Map" erstellt.
Stellen Sie die umgekehrte Geokodierung auf Japanisch mit der Python Google Maps-API bereit
[Rails] So zeigen Sie Google Map an
Google API-Zugriffstoken und Aktualisierungstoken
Erhalten Sie Conversions und Einnahmen mit der Google Analytics-API und melden Sie sich bei Slack
Versuchen Sie, Google Map und Geography Map mit Python anzuzeigen
[Kartenanzeige] Zeigen Sie eine Karte anhand der vom Benutzer registrierten Adresse mit der JavaScript-API und der Geokodierungs-API von Google Maps an!
Berechnen Sie das Standardgewicht und zeigen Sie es mit Python an
Streaming-Spracherkennung mit der Google Cloud Speech API
Erklären von JavaScript der Google Maps Geocoding API
Führen Sie die Google-Übersetzung und die DeepL-Übersetzung mit der GUI aus
Verwenden Sie TPU und Keras mit Google Colaboratory
Mit Ruby (Rails) verschlüsseln und mit Python entschlüsseln
Holen Sie sich Urlaub mit der Google Kalender-API
Folie bearbeiten (Powerpo für Google) mit Python (kostengünstiger RPA-Fall mit Google API und Python)
[Rails 6 / Google Map API] Veröffentlichen Sie eine Adresse und setzen Sie mehrere Markierungen auf der Karte
Verwendung von OAuth und API für Dienstkonten mit Google API Client für Python
So zeigen Sie eine Karte mit der Google Map API (Android) an
Ich habe "License OCR" mit der Google Vision API ausprobiert
Versuchen Sie, Google Chrome mit Python und Selenium auszuführen
Interaktive Anzeige algebraischer Kurven in Python, Jupyter
Automatische Sprachtranskription mit Google Cloud Speech API
Wickeln Sie japanische Sätze gut ein und zeigen Sie sie mit Pyglet an
Ich habe "Receipt OCR" mit der Google Vision API ausprobiert
Holen Sie sich den Betreff und den Text von Google Mail mit der Python- und Google Mail-API
Integration von Google App Engine-Datenspeicher und Such-API
Formatieren und anzeigen Sie das von der OpenWeatherMap-API erfasste XML.
[Schienen] So zeigen Sie mehrere Markierungen auf Google Map an und zeigen beim Klicken eine Sprechblase an
Erhalten Sie Datenbeschriftungen, indem Sie bei der Vorschau von Bildern mit Rails eine Verknüpfung mit der Google Cloud Vision-API herstellen
[Für Anfänger] Anzeigen von Karten und Suchfeldern mithilfe der GoogleMap Javascript-API
Anzeigen von Seriennummernspalten und -variablen mit der Flaschenvorlage
Zeigen Sie eingebettete Bilder von MP3 und Flac mit Mutagen an
Bearbeiten Sie S3-Objekte mit Boto3 (High-Level-API und Low-Level-API)
Crawlen mit Python und Twitter API 1-Einfache Suchfunktion
Erhalten Sie Kommentare und Abonnenten mit der YouTube-Daten-API
Anzeigen und Aufnehmen von Webkamerabildern mit Python Kivy [GUI]
Analysieren mit Google Colaboratory mithilfe der Kaggle-API
Sprachtranskriptionsverfahren mit Python und Google Cloud Speech API
[Python] Mit der API von Qiita erhalten Sie Benutzer- und Artikelinformationen
Hochladen auf ein freigegebenes Laufwerk mit Google Drive API V3
YOLP: Extrahieren Sie Längen- und Breitengrade mit der Yahoo! Geocoder-API.
Installieren Sie tweepy mit pip und verwenden Sie es für API 1.1