2017-05-12 55 views
0

我正在開發一個房地產網絡應用程序,我想在列表頁面上顯示具有多個標記的地圖,並在同一區域顯示多個房屋/房屋。我在yii2/php中這樣做。我需要建議我該如何做到這一點?我已經爲每個家庭/財產添加了地圖,在良好的地圖標記中添加多個列表

回答

2

爲了類似的目的,我使用2amigos/yii2-google-maps-library(在我的情況下,它不是房屋,而是某種'設施')。

更新:我給你每個步驟的具體代碼示例。首先,你必須明白,要在地圖中設置元素,你必須創建對象。您可以創建一個指定其緯度和經度座標的簡化形式(Google地圖可爲您提供正確的格式),即:$coord = new LatLng(['lat' => 49.403916, 'lng' => 17.036116])

第一步是創建地圖,爲此你必須提供必須居中的位置。您還可以指定變焦的水平,和其他一些東西,你可以在模塊的文檔檢查:

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

一旦腦水腫的地圖,你可以開始添加的東西。在我的情況下,我添加設施(Facilty模型)。餘存儲其座標(緯度,經度),姓名,地址等。然後,我遍歷的Facility IES(foreach $f in $facilities)的數組,併爲每一個:

  1. 創建一個帶有其座標的LatLang對象:$coord = new LatLng(['lat' => $f->lat, 'lng' => $f->lng]);

  2. 創建一個新的Marker

    $marker = new Marker([ 
           'position' => $coord, 
           'title' => $lab['name_lab'], 
           'animation' => 'google.maps.Animation.DROP', 
           'visible'=>'true' 
          ]); 
    
  3. 創建該基金的信息(姓名,地址)的InfoWindow和其附加到Marker(你可以寫在其內容的HTML):$marker->attachInfoWindow(new InfoWindow(['content' => $f->address]))

  4. 標記添加到Map$map->addOverlay($marker);

最後,在循環後,系統會顯示與地圖:

echo $map->display(); 

完整示例:

$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(); 

有很多自定義選項,但這應該是enoguh讓你開始。請檢查模塊的文檔以及Google地圖。

+0

謝謝你的回答Mr.gmc。我試圖用戶2amigos,但我無法理解它的工作。 –

+0

檢查我的更新,我給你的例子 – gmc

+0

非常感謝,但你能提供更多的描述性信息? –