Locations 插件 🌍

我想再次提出这个功能请求。

我们社区在策划活动时就遇到了这个问题。人们现在使用谷歌地图来查看建议的活动地点有多远。

另外,在查看其他用户有多远时也很有用。(我们经营一个潜水论坛,人们在论坛上寻找潜水伙伴。)

3 个赞

@Roi,你可能会对这个感兴趣:

通过这个版本,我们引入了(实验性的)自然语言搜索用户位置的功能,通过 Discourse Chatbot :robot: ,你可以问它类似这样的问题:

  • “列出离我位置最近的五个用户”……(如果你已注册位置)……甚至
  • “列出我位置500公里内的所有用户。”
  • “列出柏林200公里内的用户。”

它还不支持话题位置……但已经完成了2/3,并且正在开发中……

这个版本包含数据迁移,所以如果有人遇到任何问题,请告诉我,我会尽力帮助。

8 个赞

我知道这仍然是一个进行中的项目,所以您可能已经知道了……

  1. 有时当我打开用户地图时,我会看到一张空白地图,即显示了国家地图但上面没有用户。如果我刷新页面,地图上的用户就会重新出现。我还没有找到一种保证能复制此问题的方法,但我至少有 50% 的时间在打开用户地图时看到空白地图。空白地图似乎只出现在用户地图上。至少到目前为止,我还没有在主题地图上看到过它。

  2. 在姓名/用户名/等单选按钮字段的左侧有一个空白的白色框,例如:

image

1 个赞
  1. 是的,这个解决方案并不完美。目前这不是我的重点。PR 已接受。

  2. 完全是故意的:这是一个搜索框。

1 个赞

啊哈!原来是这样。

我刚发现了别的东西。我的主题地图上没有多少条目,但在美国,我有3个聚集在东海岸,2个聚集在西海岸。如果我点击东海岸的集群,它会放大显示三个单独的主题位置。如果我点击其中任何一个位置,它不会打开相关主题,而是会放大显示西海岸的两个位置。这是可重复的——请在我的网站 https://discourse.weather-watch.com/map 上试试。

2 个赞

确实非常好奇!奇怪的是,它们在我的数据上运行正常。我还注意到你的地图上有一个错误,当鼠标悬停在集群上时会出现。

Leaflet 版本严重过时……可能是个问题……

1 个赞

好的,我已经将 Leaflet 及其流行的标记集群插件更新到最新版本,看看是否有帮助:

我们不妨用最新代码彻底解决它 :sweat_smile:

(如果我们还在运行旧的库,讨论这些问题就没有意义了,谁知道他们修复了什么!)

3 个赞

感谢您快速更新。初步测试效果有所改善。在我尝试的几次测试中,没有再出现东西海岸之间奇怪的跳跃现象。我明天会做更多测试。

2 个赞

是的,我明白了。太好了!感谢您迅速重新检查。

2 个赞

经过今天更多的测试,看起来上次更新已修复了首次打开时地图空白的问题,以及从聚集位置出现的奇怪的东西海岸跳跃 :grinning:

4 个赞

感谢您指出这一点,抱歉我这几天不在,未能及时评论。

这听起来确实很有希望。 :slight_smile: 但目前,我们的论坛中没有启用 AI Chatbot。我仍在努力猜测从 OpenAI 获取 API 密钥的成本。由于我们的社区是非营利性质的,不收费,我们很难从少量捐赠和其他类似事物中收回服务器和域名成本。所以这对我们来说是一个重要的话题。 :wink:

示例计算帖子的链接不再有效。您能告诉我可以在哪里找到它吗? :slight_smile:

除了 AI Chatbot 集成之外:您是否也考虑将距离信息添加到插件中?因此,只需显示当前登录用户到事件或另一个用户的距离 - 如果双方都设置了位置?这在我们之前使用的 phpBB 位置插件中是如何简单处理的。

抱歉,由于主题变得过长,成本帖子已被删除。我将从 OP 中删除它。(已完成)

我建议尝试一下:最初仅限管理员权限。

不,我无意在没有聊天机器人的情况下将其集成到 Locations 插件中。

对于所有使用子文件夹的用户,@renato 已好心提交 PR 以确保标记在此类配置中正常工作:

非常感谢 @renato:pray:

5 个赞

谢谢!
有一个小问题:
如何更新此插件?run ./reset-all-repos 看起来有风险。
目标是仅更新此插件,并且不丢失已输入的 180 个项目的任何数据。

1 个赞

这不是一个特定于插件的问题,但您需要运行 tests-passed 并更新到最新版本才能使所有新功能正常工作。

这总是有风险的 :sweat_smile:,除非您想运行一个稳定版安装?(那样的话,此更新尚不相关)。

在线升级(从 /admin/upgrade)可能会对您有用,或者像往常一样,使用 ./launcher rebuild app 重新构建 - 假设您运行的是标准安装?

我无法保证您其他插件的维护级别,但祝您好运! :sweat_smile:

1 个赞

遇到了同样的问题。

我尝试了这里列出的方法

但没有奏效。
Ubuntu 系统,重启无效,
./launcher restart app./launcher start app 无效。

运行 ./launcher rebuild app 时的错误消息

......
111:M 12 Dec 2023 12:11:02.199 * DB 已保存到磁盘
111:M 12 Dec 2023 12:11:02.200 # Redis 已准备好退出,再见...


FAILED
--------------------
Pups::ExecError: cd /var/www/discourse & su discourse -c 'bundle exec rake db:migrate' failed with return #<Process::Status: pid 3553 exit 1>
失败位置:/usr/local/lib/ruby/gems/3.2.0/gems/pups-1.2.1/lib/pups/exec_command.rb:132:in `spawn'
exec 失败,参数为 {"cd"=>"$home", "hook"=>"db_migrate", "cmd"=>["su discourse -c 'bundle exec rake db:migrate'"]}
引导失败,退出代码为 1
**引导失败** 请向上滚动查找更早的错误消息,可能不止一个。

感谢 @itsbhanusharma

它说是由之前的错误引起的,我在这里列出它们

I, [2023-12-13T00:50:13.222274 #1]  INFO -- : > cd /var/www/discourse & su discourse -c 'bundl                e exec rake db:migrate'
2023-12-13 00:50:18.347 UTC [3597] discourse@discourse ERROR:  invalid input syntax for type double precision: ""

2023-12-13 00:50:18.347 UTC [3597] discourse@discourse STATEMENT:  INSERT INTO locations_topic                 (topic_id, latitude, longitude, name, street, district, city, state, postalcode, country, count                rycode, international_code, locationtype, boundingbox, updated_at, created_at) (
          SELECT
          tc.topic_id,
          (tc.value::json->'geo_location'->>'lat')::FLOAT,
          (tc.value::json->'geo_location'->>'lon')::FLOAT,
          tc.value::json->'geo_location'->>'name',
          tc.value::json->'geo_location'->>'street',
          tc.value::json->'geo_location'->>'district',
          tc.value::json->'geo_location'->>'city',
          tc.value::json->'geo_location'->>'state',
          tc.value::json->'geo_location'->>'postalcode',
          tc.value::json->'geo_location'->>'country',
          tc.value::json->'geo_location'->>'countrycode',
          tc.value::json->'geo_location'->>'international_code',
          tc.value::json->'geo_location'->>'type',
          ARRAY[
            (tc.value::json->'geo_location'->'boundingbox'->>0)::FLOAT,
            (tc.value::json->'geo_location'->'boundingbox'->>1)::FLOAT,
            (tc.value::json->'geo_location'->'boundingbox'->>2)::FLOAT,
            (tc.value::json->'geo_location'->'boundingbox'->>3)::FLOAT
          ],
          tc.updated_at,
          tc.created_at
        FROM topic_custom_fields tc
        WHERE tc.name = 'location'
        AND tc.value NOT IN ('"{}"', '{}', '')
        AND tc.value::json->'geo_location'->>'lat' IS NOT NULL
        AND tc.value::json->'geo_location'->>'lon' IS NOT NULL
        )
        ON CONFLICT DO NOTHING

rake aborted!
StandardError: An error has occurred, this and all later migrations canceled: (StandardError)

ERROR:  invalid input syntax for type double precision: ""
/var/www/discourse/vendor/bundle/ruby/3.2.0/gems/rack-mini-profiler-3.3.0/lib/patches/db/pg.rb: 110:in `exec'
/var/www/discourse/vendor/bundle/ruby/3.2.0/gems/rack-mini-profiler-3.3.0/lib/patches/db/pg.rb: 110:in `async_exec'
/var/www/discourse/vendor/bundle/ruby/3.2.0/gems/mini_sql-1.5.0/lib/mini_sql/postgres/connection.rb:202:in `run'

#--------------
Caused by:
PG::InvalidTextRepresentation: ERROR:  invalid input syntax for type double precision: "" (PG:: InvalidTextRepresentation)
/var/www/discourse/vendor/bundle/ruby/3.2.0/gems/rack-mini-profiler-3.3.0/lib/patches/db/pg.rb: 110:in `exec'
/var/www/discourse/vendor/bundle/ruby/3.2.0/gems/rack-mini-profiler-3.3.0/lib/patches/db/pg.rb:  110:in `async_exec'
/var/www/discourse/vendor/bundle/ruby/3.2.0/gems/mini_sql-1.5.0/lib/mini_sql/postgres/connection.rb:202:in `run'

以及 docker ps 的消息

/var/discourse# docker ps
CONTAINER ID   IMAGE                 COMMAND        CREATED        STATUS        PORTS                                                                      NAMES
d3c8e85149a8   local_discourse/app   "/sbin/boot"   About an hour ago   Up 6 minutes   0.0.0.0:80->80/tcp, :::80->80/tcp, 0.0.0.0:443->443/tcp, :::443->443/tcp   app

你的错误与 OP 不同。你能提供重建的完整日志吗?

谢谢 Bhanu,我已重新执行了重建过程,并在之前的帖子中重现了“早期错误”。您能否帮助我理解并解决这个问题?

看起来是 locations 插件的问题,您能否尝试在不使用该插件的情况下重新构建,看看是否能解决构建问题?

1 个赞

太好了!我刚重建了系统,它能正常工作了。

虽然我不得不说,位置插件非常好。所以我希望可以进行相对调试。