Zeigen Sie mehrere Markierungen auf Google Map an

Zeichnen Sie Ihre Recherchen auf, weil Sie das Zielgeschäft und Geschäfte in der Nähe auf Google Map anzeigen möchten. Da es in diesem Artikel hauptsächlich um die Beschreibung von Javascript geht, wird die Beschreibung zur Erfassung von Google Map API-Schlüsseln usw. weggelassen. Die Bedingungen sind wie folgt.

・ Der Zielspeicher wird in der Mitte der Karte angezeigt. (Marker aufstellen) ・ Markierungen werden auch in Geschäften in einem Radius von 5 km angezeigt, die auf dem Zielgeschäft zentriert sind. ・ Das Zielgeschäft und die umliegenden Geschäfte haben unterschiedliche Markierungsfarben. ・ Wenn Sie auf die Markierung eines nahe gelegenen Geschäfts klicken, wird eine Sprechblase angezeigt. ・ Der Geschäftsname ist in der Sprechblase enthalten. Wenn Sie auf den Geschäftsnamen klicken, gelangen Sie zur Detailseite des Geschäfts.

Gif.gif

Entwicklungsumgebung

ruby 2.6.5 Ruby on Rails 6.0.3.3 OS: macOS Catalina

Einführung

Dieser Artikel zur Verwendung von GoogleMapApi ist leicht verständlich zusammengefasst und wurde als Referenz verwendet. Verwendung der Google Maps-API

Implementierungscode

Der Code ist unten.


  let map;
  let mainMarker;
  let marker =[];
  let infoWindow = [];

function initMap(){
  let markerData = gon.places;
  let latlng = {lat: gon.latitude, lng: gon.longitude};
  //Angabe der Ausgangsposition
  map = new google.maps.Map(document.getElementById('map'), {
  center: latlng,
  zoom: 14
  });

  //Setzen Sie einen Marker in die Ausgangsposition
  mainMarker = new google.maps.Marker({
    map: map,
    position: latlng
  });

  //Setzen Sie einen Marker auf ein nahe gelegenes Geschäft
  for (var i = 0; i < markerData.length; i++) {
    const image = "https://maps.google.com/mapfiles/ms/icons/yellow-dot.png ";
    const id = markerData[i]['id'];
    //Erstellen Sie Breiten- und Längengraddaten
    let markerLatLng = new google.maps.LatLng({lat: markerData[i]['latitude'], lng: markerData[i]['longitude']});
    //Marker hinzufügen
    marker[i] = new google.maps.Marker({
      position: markerLatLng,
      map: map,
      icon: image,
    });

    //Fügen Sie einen Ballon hinzu
    infoWindow[i] = new google.maps.InfoWindow({
    //Es wurde ein Link zur Seite mit den Store-Details in der Sprechblase hinzugefügt
    content: `<a href=/laundries/${id}>${markerData[i]['name']}</a>`
    });

    markerEvent(i); 
  }

  //Zeigen Sie eine Sprechblase an, wenn Sie auf eine Markierung klicken
  function markerEvent(i) {
    marker[i].addListener('click', function() {
      infoWindow[i].open(map, marker[i]);
    });
  }
}

document.addEventListener('turbolinks:load', function(){
  initMap();
});

Schauen wir uns jeden an. 1. Definition von Variablen

 let map;
 let mainMarker;
 let marker =[];
 let infoWindow = [];

Ich habe zwei Variablen vorbereitet, weil ich die Markierungen des Zielspeichers und der umgebenden Speicher trennen wollte. Da marker mehrere Informationen zu nahe gelegenen Geschäften enthält, ist es in einem Array angeordnet. In ähnlicher Weise ist auch "infoWindow" angeordnet, da wir der Markierung jedes Geschäfts einen Ballon hinzufügen möchten.

2. Erstellen einer Karte Setzen Sie eine Markierung

  let markerData = gon.places;
  let latlng = {lat: gon.latitude, lng: gon.longitude};
  //Angabe der Ausgangsposition
  map = new google.maps.Map(document.getElementById('map'), {
  center: latlng,
  zoom: 14
  });

  //Setzen Sie einen Marker in die Ausgangsposition
  mainMarker = new google.maps.Marker({
    map: map,
    position: latlng
  });

Eine Variable namens latlng wird definiert, um den Breiten- und Längengrad des Geschäfts anzugeben. gon ist eines der Juwelen, das die in Rails definierten Variablen in Variablen konvertiert, die in Javascript verwendet werden können. (https://github.com/gazay/gon) Erstellen Sie eine neue Karte, indem Sie "new google.maps.Map" ausführen und optional die Mitte und die Zoomstufe angeben. Informationen zum Erstellen von Karten finden Sie unter Let's Programming und unter Maps JavaScript API Documentation. Karten / Dokumentation / Javascript / Übersicht? hl = ja # Zoomstufen) wurde als Referenz verwendet.

Setzen Sie als Nächstes Markierungen auf der erstellten Karte. Sie können einen Marker auch setzen, indem Sie einen Marker mit "new google.maps.Marker" erstellen und angeben, auf welcher Karte der Marker platziert werden soll und wo der Marker platziert werden soll.

3. Platzieren Sie einen Marker auf nahegelegenen Geschäften und fügen Sie einen Ballon hinzu


for (var i = 0; i < markerData.length; i++) {
    const image = "https://maps.google.com/mapfiles/ms/icons/yellow-dot.png ";
    const id = markerData[i]['id'];
    //Erstellen Sie Breiten- und Längengraddaten
    let markerLatLng = new google.maps.LatLng({lat: markerData[i]['latitude'], lng: markerData[i]['longitude']});
    //Marker hinzufügen
    marker[i] = new google.maps.Marker({
      position: markerLatLng,
      map: map,
      icon: image,
    });

    //Fügen Sie einen Ballon hinzu
    infoWindow[i] = new google.maps.InfoWindow({
    //Es wurde ein Link zur Seite mit den Store-Details in der Sprechblase hinzugefügt
    content: `<a href=/laundries/${id}>${markerData[i]['name']}</a>`
    });

    markerEvent(i); 
  }

  //Zeigen Sie eine Sprechblase an, wenn Sie auf eine Markierung klicken
  function markerEvent(i) {
    marker[i].addListener('click', function() {
      infoWindow[i].open(map, marker[i]);
    });
  }

Wir extrahieren die Werte der in `let markerData = gon.places;` definierten Variablen nacheinander und fügen Marker und Sprechblasen hinzu. Und weil ich die Farbe des Markers ändern wollte, definierte ich ein Symbol in der Konstante "Bild" und verwendete das in "Symbol: Bild" definierte Symbol. new google.maps.LatLng({lat: markerData[i]['latitude'], lng: markerData[i]['longitude']}); Gibt an, dass für den Breiten- und Längengrad jedes Elements eine Markierung festgelegt werden soll.

Dann fügen Sie einen Ballon hinzu. Sie können die Zeichen, die in die Sprechblase eingefügt werden sollen, mit "Inhalt" angeben. Dieses Mal habe ich das a-Tag verwendet, weil ich zur Detailseite wechseln wollte, indem ich jeden Geschäftsnamen angezeigt und darauf geklickt habe. Da es nicht nur durch Erstellen der Sprechblase am Ende angezeigt wird, habe ich addListener verwendet, um die Sprechblase zu öffnen, wenn auf die Markierung geklickt wird.

So zeigen Sie mehrere Markierungen in Google Map an.

Recommended Posts