Плагин Locations 🌍

Проверьте настройку location users map limit. Если её значение меньше количества пользователей, указавших своё местоположение, пользователи, превышающие этот лимит, не будут отображаться на карте.

5 лайков

Вот и всё. Спасибо. :smile:

2 лайка

Некоторые из моих пользователей сталкиваются с ограничением частоты запросов у провайдера по умолчанию (nominatim), из-за чего им приходится ждать минуту перед повторной попыткой.

Странно, но я сам не сталкиваюсь с каким-либо лимитом.

См.: The location field in profile is kind of broken - Forum Feedback - Unicyclist.com

  1. Есть ли у кого-нибудь идея, почему я не сталкиваюсь с этим лимитом, в то время как некоторые пользователи сталкиваются? Я пробовал вводить длинные названия местностей быстро.
  2. Какой был бы ваш второй выбор для настройки location_geocoding_provider (для бесплатного использования)?
  3. Что представляет собой настройка location_geocoding_debounce?

Я вижу в политике использования Nominatim, что «Поиск с автодополнением: это пока не поддерживается Nominatim, и вы не должны реализовывать такой сервис на стороне клиента с использованием API».

Автодополнения нет в кнопке местоположения при создании новой темы, но оно есть в пользовательском поле:

image

image

chrome_tOtNSZ2dXy

  1. Является ли это запрещённым использованием? :thinking:

Да и нет. В основном нет. Это может нарушать GDPR, если местоположение определяется автоматически без действий пользователя, И сайт управляется компанией или сообществом (то есть не частным лицом), И эта информация не необходима.

Но… геолокация по IP очень неточна. Не знаю, как обстоят дела во Франции, но в Финляндии все операторы действуют по всей стране, поэтому каждый раз, когда мой IP меняется, меняется и моё местоположение, и каждый раз оно указывает на неверный город.

Кроме того, IP-адрес не считается персональными данными, а скорее общедоступными, которые нельзя использовать для идентификации конкретного человека.

Однако использование плагина геолокации не запрещено, не запрещено законом и не является незаконным, если пользователь сам хочет это показать. А использование IP в качестве источника данных о местоположении никогда не является незаконным.

Тем не менее, могут возникать некоторые этические вопросы. Но это зависит от конкретного форума.

На самом деле, возможно, я неправильно понял, как работает этот плагин. Мне нужно будет прочитать всю эту тему. Спасибо за ваш ответ. :slight_smile:

Nominatim можно использовать только для тестирования. Для использования в производственной среде я рекомендую

2 лайка

Продолжаю тему с прошлого месяца, приношу извинения — somehow я пропустил уведомления о ответах :man_facepalming:

Наш другой сайт, где текст отображается крупнее, использует Leaflet v1.5.1.

Я вижу, что плагин Locations был версии 1.3.4, а теперь стал 1.7.1, значит, версия не является проблемой.

Согласен.

Напомню всем, что текст на нашей карте Locations настолько мал, что его невозможно прочитать.

Пример со скриншотами здесь: Locations Plugin 🌍 - #736 by Richie

Спасибо, Роберт @merefield, да, у меня есть доступ к исходному коду другого сайта, где текст крупнее, но используется та же базовая карта.

Разница, как я полагаю, в том, что передается дополнительный параметр:

tileSize: 512

Он применяется в следующем контексте:



// Атрибуция
var mbAttr = 'Карта &copy; <a href="https://www.openstreetmap.org/">OpenStreetMap</a>, Изображения © <a href="https://www.mapbox.com/">Mapbox</a>, Контент &copy; <a href="https://GreyArro.ws/">Grey Arrows Drone Club</a>',
	mbUrl = 'https://api.mapbox.com/styles/v1/mapbox/{id}/tiles/{z}/{x}/{y}?access_token=<%=Variabs.GlobalVariables.strOpenStreetMapKey%>',
	mbMaxZoom = '20'
;


// Базовые карты
var
	// Полный список: https://gis.stackexchange.com/a/244797/145060
	// Полный список: https://docs.mapbox.com/help/troubleshooting/migrate-legacy-static-tiles-api/#which-classic-styles-are-being-deprecated
	// Полный список: https://docs.mapbox.com/api/maps/#mapbox-styles
	dark = L.tileLayer(mbUrl, { id: 'dark-v10', maxZoom: mbMaxZoom, attribution: mbAttr, tileSize: 512, zoomOffset: -1 }),
	road = L.tileLayer(mbUrl, { id: 'outdoors-v11', maxZoom: mbMaxZoom, attribution: mbAttr, tileSize: 512, zoomOffset: -1 }),
	satellite = L.tileLayer(mbUrl, { id: 'satellite-v9', maxZoom: mbMaxZoom, attribution: mbAttr, tileSize: 512, zoomOffset: -1 }),
	hybrid = L.tileLayer(mbUrl, { id: 'satellite-streets-v11', maxZoom: mbMaxZoom, attribution: mbAttr, tileSize: 512, zoomOffset: -1 })
;

Поэтому, я думаю, у меня есть предложение по улучшению :slight_smile:

Можно ли добавить параметр tileSize в настройки плагина?

Или, возможно, я могу каким-то образом передать нужный размер тайла в настройке Map tile layer uri? :thinking:

Здравствуйте,

Кажется, я заметил проблему с кнопкой расположения композитора.
Версия Discourse a6abf8d07a

Спасибо :slightly_smiling_face:

1 лайк

Спасибо, @Don, я смог воспроизвести. Хотя это, похоже, не останавливает работу, я займусь этим очень скоро.

2 лайка

Это связано с ломающим изменением из этого коммита в ядре: FIX: Use CSS transition to make room for composer (#16750) · discourse/discourse@9ea8a4a (github.com)

Я внес исправление вместе с несколькими небольшими правками форматирования для улучшения внешнего вида и удобства использования:

4 лайка

Спасибо, Роберт :slightly_smiling_face: Я очень ценю, что вы исправили это так быстро, вне времени обслуживания. Я скоро обновлюсь и также обновлю этот пост о том, как это работает. :slightly_smiling_face:

Работает отлично, спасибо еще раз! :slightly_smiling_face:

1 лайк

Привет. Подскажите, пожалуйста, можно ли как-то добавить локацию на карту, просто поставив метку с помощью этого плагина?

Местоположения некоторых сообществ находятся в местах, которые трудно определить без использования координат, что может отпугнуть некоторых пользователей от добавления локации. Спасибо!

2 лайка

Я был уверен, что кто-то уже запрашивал это ранее, но, насколько я вижу, этого нет в текущем списке.

Предложения по новым функциям можно оставить здесь: Pavilion

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

Мы также будем рады получить pull-запросы. Это особенно хорошая функция для добавления.

5 лайков

Здравствуйте,

Я заметил проблему с отображением местоположения под заголовком темы. Если пользователь удаляет ранее добавленное местоположение через /preferences/profile, то под заголовком темы отображается пустое поле вместо того, чтобы скрыть его.

Спасибо :slightly_smiling_face:

Привет!

Я модифицировал шаблон list/topic-list-item.raw, чтобы отображать местоположение в списке тем:

    {{#if topic.location}}
      <div class="title-location">
        {{d-icon 'map-marker-alt'}} {{location-format topic.location opts}}{{location-label-container}}
      </div>
    {{/if}}

Но, кажется, мое условие написано неправильно, потому что при отключении плагина цикл списка тем ломается.

Как правильно проверить наличие местоположения темы в шаблоне Handlebars?

1 лайк

Переопределение этого кажется немного чрезмерным, почему бы не использовать коннекторы?:

topic-list-after-title ИЛИ
topic-list-before-category

Посмотрите здесь: An interesting strategy for passing properties via raw template plugin outlets

2 лайка

Потому что я не нашёл подходящих (или, возможно, их не существовало на момент, когда я модифицировал шаблон, около 2 лет назад) :sweat_smile:

Вероятно, так будет проще, попробую, спасибо!


Эх… Не получается использовать эти коннекторы.

Скучные вещи, которые я пробовал и изучал

Я прочитал Developing Discourse Themes & Theme Components.

Предполагая, что вот так мы добавляем HTML-код в коннектор:

<script type="text/x-handlebars" data-template-name="/connectors/topic-above-post-stream/test">
  <div style="height: 200px; width: 200px;background: red"></div>
</script>

Я попробовал

<script type="text/x-handlebars" data-template-name="/connectors/topic-list-after-title/test">
  <div style="height: 200px; width: 200px;background: red"></div>
</script>

Но это не сработало. Это потому, что topic-list-item — это файл .hbr, а не .hbs?

Я использовал (deprecated) Plugin outlet locations theme component, но выходы внутри списка тем не отображаются.

Я также изучил это: What is the difference between raw.hbs handlerbar files and only .hbs handlerbar files?.

Или, может быть, мне просто нужно создать компонент темы с дополнительным файлом, как здесь https://github.com/discourse/discourse-topic-thumbnails/blob/main/javascripts/discourse/connectors/topic-list-before-link/topic-thumbnail.hbr?

Но здесь создаются новые коннекторы, тогда как topic-list-after-title и topic-list-before-category уже существуют… Так что я немного запутался.

2 лайка

Возможно, это поможет?:

image

image

{{context.topic.location.street}}

image

или ещё лучше:

{{location-format context.topic.location}}

что приведёт к следующему:
image

после чего вы можете доработать это с помощью CSS (например, перенести на новую строку).

2 лайка

Да, отлично, большое спасибо, Роберт!

Итак, для тех, кто заинтересован: этот компонент темы просто добавляет локации в список тем.

3 лайка

Использование аутлета — гораздо более элегантное решение, но есть проблема.

Расположение аутлета находится сразу после заголовка темы… и перед блоком бейджей (где отображается точка, указывающая на непрочитанные сообщения или новые темы). В результате:

Я не вижу простого способа исправить это, даже с помощью CSS (я пробовал разные варианты).

Также мне кажется, что запрос на добавление нового аутлета в #feature не будет достаточно значимым, чтобы его включили в Discourse.


Редакция: Я сделал так, чтобы бейдж располагался рядом с местом размещения. Это должно подойти.

image

1 лайк