0

Ich entwickle eine Web-Anwendung für Immobilien und ich möchte eine Karte auf Listing-Seite mit mehreren Marker zeigen mehrere Häuser/Eigenschaften in der gleichen Gegend. Ich mache das in yii2/php. Ich brauche einen Vorschlag, wie ich es machen kann? Ich habe bereits Karten für jedes Haus/Grundstück hinzugefügt,mehrere Liste in guter Karte hinzufügen Marker

Antwort

2

Für ähnliche Zwecke verwende ich 2amigos/yii2-google-maps-library (in meinem Fall ist es nicht Häuser, sondern irgendeine Art von "Einrichtungen").

Aktualisieren: Ich gebe Ihnen konkrete Codebeispiele für jeden Schritt. Zuallererst müssen Sie verstehen, dass zum Erstellen von Elementen in der Karte LatLang Objekte erstellt werden müssen. Sie erstellen eine simplyity, die ihre Breiten- und Längenkoordinaten angibt (Google Maps gibt Ihnen die im richtigen Format), d. H .: $coord = new LatLng(['lat' => 49.403916, 'lng' => 17.036116]).

Der erste Schritt ist das Erstellen der Karte, für die Sie angeben müssen, wo sie zentriert werden soll. Sie können auch die Zoomstufe angeben und einige andere Dinge, die Sie in der Modul docs überprüfen:

$map = new Map([ 
    'center' => $coord, 
    'zoom' => 4, 
    'width' => '100%' 
]); 

Sobald Sie die Karten hace, können Sie beginnen, Dinge hinzufügen. In meinem Fall füge ich facilities (Modell Facilty) hinzu. I speichert ihre Koordinaten (Breite, Länge), Name, Adresse, etc. Dann I Schleife über ein Feld von Facility ies (foreach $f in $facilities) und für jeden einzelnen:

  1. erstellen LatLang Objekt mit seinen Koordinaten: $coord = new LatLng(['lat' => $f->lat, 'lng' => $f->lng]);

  2. ein neues Marker:

    $marker = new Marker([ 
           'position' => $coord, 
           'title' => $lab['name_lab'], 
           'animation' => 'google.maps.Animation.DROP', 
           'visible'=>'true' 
          ]); 
    
  3. ein InfoWindow erstellen mit der Info Facility (Name, Adresse) und befestigen sie es zum Marker (können Sie HTML in ihrem Inhalt schreiben): $marker->attachInfoWindow(new InfoWindow(['content' => $f->address]))

  4. den Marker auf die Map hinzufügen: $map->addOverlay($marker);

schließlich nach der Schleife, wir die Karte anzuzeigen:

echo $map->display(); 

Ein komplettes Beispiel:

$coord = new LatLng(['lat' => 49.403916, 'lng' => 17.036116]); 
$map = new Map([ 
    'center' => $coord, 
    'zoom' => 4, 
    'width' => '100%' 
]); 

foreach ($facilities as $f) { 
    $coord = new LatLng(['lat' => $f->lat, 'lng' => $f->lng]); 
    $marker = new Marker([ 
       'position' => $coord, 
       'title' => $lab['name_lab'], 
       'animation' => 'google.maps.Animation.DROP', 
       'visible'=>'true' 
      ]); 
    $marker->attachInfoWindow(new InfoWindow(['content' => $f->address])); 
    $map->addOverlay($marker); 
}  

echo $map->display(); 

Es gibt viele Anpassungsoptionen, aber dies sollte für den Anfang ausreichen. Bitte überprüfen Sie die Dokumente des Moduls sowie die Google-Karten.

+0

Vielen Dank für Ihr answe Mr.gmc. Ich habe versucht, 2amigos zu benutzen, aber ich konnte nicht verstehen, dass es funktioniert. –

+0

Überprüfen Sie mein Update, ich gebe Ihnen Beispiele – gmc

+0

Vielen Dank, aber können Sie beschreibender Informationen bieten? –

Verwandte Themen