问题标签 [geokit]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
586 浏览

ruby-on-rails - 让 GeoKit 与我的 Address 类很好地配合

我的Address类有一个geocode类方法,它返回从地理编码方法参数派生的地址对象数组(如果地理编码结果完全匹配,则数组将有一个元素)。

编写此方法的一个令人讨厌的部分是将 GeoKit 地址对象转换为我的地址对象(例如,“street_address”->“address1”)。有一个更好的方法吗?

0 投票
3 回答
3106 浏览

ruby-on-rails - Geokit 和 Authlogic,在创建用户时对用户 IP 地址进行地理编码

有人做过吗?我对如何使这项工作感到困惑,首先我有我的用户模型

使用它进行地理编码在 IRB 中工作正常,只是无法弄清楚如何让它在我的项目中工作。

尝试在此处使用自述文件中的一些示例:http://github.com/andre/geokit-rails/tree/master

无论如何,这就是我所拥有的:

这与我在 my 中的保存操作相对应userController,我需要在保存后执行此操作,因为 authlogic 在保存用户或会话后提供 IP。我想最终我会把它变成一个后台进程,但在那之前我怎样才能让它工作呢?我在用户模型中有一个位置列,我将存储结果geocode()

同样现在我只有一些任意 IP 地址“12.12.12.12”,但实际上应该是 current_login_ip

0 投票
2 回答
643 浏览

ruby - 具有不同精度的纬度和经度的浮点计算

背景:我收到一个 long 和 lat 作为 Web 服务的参数。它们通常最多保留 6 位小数。当收到新请求时,我会计算最后记录的 loc 和请求参数中的 long/lat 之间的距离。如果距离大于某个英里的阈值,我会更新当前位置。

问题:我使用 geokit gem/plugin 来计算位置之间的距离。很少会出现一个错误(作者网站上提到的零距离错误 - 我正在使用 1.4.1 声称该错误已修复,但我仍然看到它发生耸肩)导致距离计算返回一些非常不准确的东西在计算两个相同点之间的距离时(如果用户没有移动,则会发生这种情况)。这导致不应该发生对用户当前位置的更新。您可能想知道 - 如果它只是将 loc 更新为完全相同的坐标,谁在乎呢?好吧,答案是在更新 loc 时会发生一堆其他废话,这使它成为一个实际问题。

尝试的解决方案:我尝试添加逻辑以在计算距离之前手动检查两个位置是否相同,然后跳过计算,如果是这样,则不更新。传入的参数是 long/lats,精度为 6 位小数;而在我的数据库中,我将值存储为浮点数,它似乎只存储 4 个小数位。这导致我的浮点比较总是失败,并且不适当的 loc 更新继续发生。

唷,好的,所以实际的问题是:我应该如何进行这种比较?我是否应该从传入的纬度/经度中截断小数点后 2 位,以某种方式四舍五入,以便第四位正确,然后进行比较?或者,我应该进行“在一定范围内”的比较(例如,reported_loc.long > current_loc.long - .0001 && reported_loc.long < current_loc.long + .0001)?此外,任何对现有 ruby​​ gem/plugins 或内置函数的建议都将不胜感激。

以下是日志的示例输出:

谢谢

汤姆

0 投票
1 回答
759 浏览

mysql - mysql是否使用我的索引,geokit的性能可以提高吗?

我在rails应用程序中使用geokit(acts_as_mappable),当有大量模型时,径向或边界搜索的性能会大大降低(我尝试过1-2百万,但问题无疑比这更早出现)。

Geokit 根据表中的 lat 和 lng 列(纬度和经度)进行所有计算。为了提高性能,geokit 通常会添加一个边界框“where”子句,目的是使用纬度和经度的组合索引来提高性能。然而,对于大量模型,它仍然非常慢,在我看来,边界框子句应该比它有更多的帮助。

所以我的问题是,有没有办法让 mysql 更好地利用组合的 lat/lng 索引或以其他方式提高 geokit sql 查询的性能?或者,可以使 lat/lng 的组合索引更有帮助吗?

编辑:我现在可以使用 Rails 并在此处更详细地编写解决方案

更多背景

例如,此查询查找给定点 10 英里范围内的所有地点。(我添加 .length 只是为了确定返回多少结果 - 在 geokit 中有更好的表达方式,但我想强制执行更典型的 SQL 查询)。

在 mac mini 上大约需要 14 秒。这是解释计划

因此,即使结果中的位置数为 1135(实际上边界框中的位置数仅为 1323),mysql 仍在检查 87554 行。

这些是索引上的统计信息(使用 rails migration add_index :places, [:lat, :lng]制作):

它似乎也与三角计算无关,因为对边界框执行类似的查询会导致查询更简单,但它的性能同样很差:

给出一个类似的解释计划:

0 投票
1 回答
983 浏览

ruby-on-rails - 为什么 Postgresql 会像这样使用 Geokit 失败?

我刚刚开始在我正在构建的应用程序中使用带有 Rails 的 geokit。我已经对我的记录进行了地理编码,但是当我进入控制台查看我可以用它做什么时,它爆炸了以下内容:用户是我的数据库中具有 lat 和 lng 的用户对象

任何想法如何解决?不幸的是,当我尝试搜索我的错误消息时,谷歌并没有太多帮助......

0 投票
1 回答
937 浏览

sql - 复杂连接的 Rails ActiveRecord 问题 - 选择不起作用

我有两个模型对象:

  • 事件
  • 场地

活动有场地。场地可以有 1..* 事件。

场地有一个位置,一个经纬度,我使用 Geokit Rails 插件。以下是这些模型在 Rails 中的样子:

非常简单!现在,我想运行一个查询,我想查找某个区域几英里内的所有事件,查看 Geokit API,我发现我可以使用可映射的:通过事件关联,并且应该能够在 Event 上调用 geokit finder!非常好(所以你可以在上面看到,我已经添加了acts_as_mappable :through 到事件中)。

这是我的 ActiveRecord 查询:

这是生成的 SQL:

哎哟。好吧,这需要相当长的时间来运行,而且不仅仅是数学问题,我认为这里的性能存在很大问题,这需要 2 秒才能在我的桌面上运行!但归根结底,这是我的抱怨:

  • 为了尝试提高性能,您可以看到我尝试在我的 ActiveRecord 查找查询中使用 SELECT 语句。我只想知道匹配的这些事件的标题,而不是所有其他字段。但是查询通过了,并从 Event! 中选择了所有内容!它使用我不熟悉的奇怪别名,例如“t1_r1”。所以这显然是一个问题。

此外,当单独针对场地运行(即取消 JOIN)时,此查询在不到 10 毫秒内执行。那么有没有办法先进行场地搜索,然后针对事件进行加入?我认为连接必须在两个表上作为一个整体完成,然后地理编码部分才会进入并缩小数据集。

任何有助于加强这个问题的帮助将不胜感激(这是一个非商业项目)。我觉得模型很简单我应该可以不用大惊小怪地做到这一点?

提前致谢!

(编辑:在这篇文章的早期版本中,我很愚蠢,Limit 工作得很好,我的观点被打破了,编辑删除了那部分。)

0 投票
2 回答
4765 浏览

ruby-on-rails - Ruby on Rails 中的 Geokit,acts_as_mappable 的问题

我查看了相关问题列表,但是我的问题似乎没有列出,因此这里是:

基本上我正在尝试在 Ruby on Rails 环境中使用 Geokit,我不确定我是否正确安装了它,我已将它包含在 environment.rb 中(并完成了 rake db:install),我现在正在尝试做下列的:

不幸的是,当我尝试运行它并查看它是否正常时,我收到以下错误:

我正在为 Visual Studio 2008 运行 Ruby in Steel,我不确定我做错了什么,因为我发现的所有在线教程都比较陈旧并且适用于我。任何帮助将不胜感激。谢谢!

编辑:(根据本的要求添加)以下是我的 environment.rb 的样子

0 投票
1 回答
963 浏览

ruby-on-rails - Google Map 上的多个标记(无法显示超过 10 个标记) - Ruby on Rails 环境 YM4R 插件

我有以下问题。我在 Ruby on Rails 中有一个谷歌地图(使用 YM4r + Geokit),无论如何,我基本上有一个标记数组,它们以下列方式填充

它们肯定存储得很好,因为它们显示得很好,低于 10 个标记。当同一页面上有超过 10 个标记时,就会出现问题,

与显示相关的更多代码是否有帮助:

在 html.erb 文件中:

屏幕上仅显示 10 个标记,而不是标记数组中的正确数量。

请问有人遇到过这个问题吗?我真的不知道如何克服这个问题

0 投票
1 回答
1038 浏览

ruby-on-rails - Geokit 错误 - “未初始化的常量”

我完全按照安装步骤让 Geokit 在我的网站上运行。我可以很好地进行距离计算,但是当我尝试使用以下方法渲染 Google 地图时:

它向我抛出了这个错误:

有谁知道为什么?我感觉它与 API 密钥或其他东西有关。此外,我完全能够进行距离计算,只是无法渲染地图本身。

0 投票
7 回答
6817 浏览

ruby-on-rails - 在 Ruby on Rails 中更改 request.remote_ip 的值

出于测试目的,我想更改 request.remote_ip 的返回值。在我的开发机器上,它总是返回 127.0.0.1,但我想给自己不同的假 IP 来测试我的应用程序的正确行为,而无需先将其部署到实时服务器!

谢谢你。