добавить несколько списков в хороший маркер карты

Я занимаюсь разработкой веб-приложения для недвижимости и хочу показать карту на странице со списком с несколькими маркерами, показывающими несколько домов / свойств в одной области. Я делаю это в yii2/php, Мне нужно предложение, как я могу это сделать? Я уже добавил карты для каждого дома / объекта,

0

Решение

Для аналогичных целей я использую 2 amigos/yii2-google-maps-library (в моем случае это не дома, а какие-то «объекты»).

Обновить: Я даю вам конкретные примеры кода для каждого шага. Прежде всего, вы должны понимать, что для размещения элементов на карте вы должны создать LatLang объекты. Вы создаете одну упрощенную форму, определяя ее координаты широты и долготы (Google Maps дает вам их в правильном формате), т.е. $coord = new LatLng(['lat' => 49.403916, 'lng' => 17.036116]),

Первым шагом является создание карты, и для этого вы должны указать, где она должна находиться по центру. Вы также можете указать уровень масштабирования и некоторые другие вещи, которые вы можете проверить в документации модуля:

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

Как только вы раскроете карты, вы можете начать добавлять вещи. В моем случае я добавляю объекты (Facilty модель). Я сохраняю его координаты (широта, долгота), имя, адрес и т. Д. Затем я зацикливаюсь на массиве Facilityиез (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();

Есть много вариантов настройки, но это должно быть достаточно для начала. Пожалуйста, проверьте документы модуля, а также карты Google.

2

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]