Снимок на ближайшую улицу

Я думаю, что это дублирование записей в объединениях. Вы должны использовать group_by с соединениями, чтобы устранить это. Попробуйте,

FbGroup.joins(:fb_posts).where('fb_groups.id IN (?)', ids).group('fb_groups.id').length

Пожалуйста, исправьте, если я ошибаюсь.

5
задан 30 April 2009 в 07:36
поделиться

2 ответа

Код, который я дал вам ранее, прослушал первые два клика и добавил маркер для каждого. Проблема в том, что когда вы перетаскиваете первый маркер, он снова вызывает событие «click» - и, таким образом, добавляет еще один маркер в том же месте.

К счастью, событие click позволяет узнать, есть ли оверлей была нажата. Поэтому выполняйте только тот код, который добавляет новый маркер, если наложение равно нулю. Обратите внимание, что оверлей не является логическим значением.

var listener = GEvent.addListener(map, "click", function(overlay, latlng) {
  if (overlay == null) {
    // code to add new marker
  }
});
2
ответ дан 14 December 2019 в 08:59
поделиться

У команды Javascript церкви Blackpool Community отличный пример именно этого ( прямая ссылка на четвертый пример ). Посмотрите и их другие примеры.

(отказ от ответственности: я не связан с ними, но многое узнал о GMaps из их примеров)

Редактировать: Я подозреваю, что события на карте запускаются примерно так (псевдокод, для имен реальных событий и т. Д. Проверьте документы GMaps):

  • щелчок карты: mousedown, mouseup, щелчок: {установить красный маркер}
  • перетащить красный маркер: mousedown, dragstart {красный маркер}, mouseup, щелчок: {установить маркер b} (mousedown + mouseup), dragend
  • оба маркера установлены? Да, проложить маршрут.

Что я бы посоветовал: в функциях перетаскивания красного маркера и маркера-A установите флаг «перетаскивание маркера», сбросьте его в функции драгенджа; в функции «Установить маркер B» установите маркер, только если мы НЕ перетаскиваем что-либо (флаг не установлен).

5
ответ дан 14 December 2019 в 08:59
поделиться
Другие вопросы по тегам:

Похожие вопросы: