Как нарисовать маркеры на основе текущего холста карты, когда пользователь перемещается по карте

Я успешно нарисовал маркеры, используя API карт Google.

var latlng = {lat: 34.7651458,lng: 121.453208};

map = new google.maps.Map(document.getElementById('map'), {
  center: latlng,
  zoom: 18
});

var marker = new google.maps.Marker({
  position: latlng,
  map: map,
  title: 'Marker!'
});
marker.setMap(map);

Но если пользователь перемещается по карте, centre:latlng меняется. Если я хочу нарисовать новый маркер для этого нового centre, как мне зафиксировать это изменение в centre, чтобы получить данные из API для рисования нового маркера. Спасибо за любое предложение.

Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Безумие обратных вызовов в javascript [JS]
Безумие обратных вызовов в javascript [JS]
Здравствуйте! Юный падаван 🚀. Присоединяйся ко мне, чтобы разобраться в одной из самых запутанных концепций, когда вы начинаете изучать мир...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
JavaScript Вопросы с множественным выбором и ответы
JavaScript Вопросы с множественным выбором и ответы
Если вы ищете платформу, которая предоставляет вам бесплатный тест JavaScript MCQ (Multiple Choice Questions With Answers) для оценки ваших знаний,...
1
0
121
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Вы можете добавить прослушиватель событий dragend к map (или вы также можете использовать center_changed). Получите центр карты с помощью map.getCenter() и создайте маркер.

map.addListener('dragend', function() {
    var c = map.getCenter();                   //Get new center of the map

    var marker = new google.maps.Marker({      //Create a new marker and use the map's center as the location.
        position: c,
        map: map,
        title: 'Marker!'
    });
});

Большое спасибо за ответ, сэр. Теперь я мог поместить свою логику в эту функцию для получения данных из API. Есть ли разница между centre_changed и dragend?

ksalf 10.04.2019 17:50

Да, любопытно, разве перетаскивание не всегда меняет центр? если бы вы не могли тянуть по дуге окружности.

Vinay 10.04.2019 17:54

Да, есть отличия. Вы можете проверить Developers.google.com/maps/documentation/javascript/events для получения дополнительной информации. Однако изменение центра можно изменить без перетаскивания. Например, когда вы программно меняете местоположение карты :)

Eddie 10.04.2019 17:56

@Eddie: Последний вопрос. В моем случае центр будет меняться только тогда, когда пользователь пересекает карту (перетаскивает ее). И, когда это перетаскивание закончится, мне нужно захватить новый центр и нарисовать новые маркеры. dragend кажется, лучше всего подходит для меня, любое мнение, сэр...

ksalf 10.04.2019 18:18

@Viney: Спасибо за перетаскивание дуги по окружности, сэр, нужно позаботиться об этом при выборе событий.

ksalf 10.04.2019 18:19

@ksalf Да, если это так dragend подходит для вашего приложения :)

Eddie 10.04.2019 18:20

Спасибо за вашу помощь и эту прекрасную ссылку, сэр. Продолжаем с «драгендом» :)

ksalf 10.04.2019 18:21

Получил право проголосовать за ответ, проголосовал за ваш, сэр.

ksalf 10.04.2019 18:27

Другие вопросы по теме