RoR - Geokit 插件:为什么 Location.find 给我返回一个空数组? (位置是“acts_as_mappable”的模型)

发布于 2024-08-18 11:52:23 字数 908 浏览 8 评论 0原文

我已经安装了 geokit gem 和 geokit-rails 插件。我配置了插件,如下所示: http://github.com/andre/geokit-rails .然后我生成了一个新模型 - Location,如下所示:

类位置 < ActiveRecord::Base
act_as_mappable :default_units =>; :公里
结尾

和一个控制器:
<代码> 类 TestController <应用程序控制器
包括 GeoKit::Geocoders
包括 GeoKit::Mappable
定义测试1
@a=Geokit::Geocoders::YahooGeocoder.geocode '台湾高雄市' @b=Location.find(:all, :origin => '100 Spear st, San Francisco, CA', :within => 5)
结束
结尾

我还在数据库中设置了一个包含 lng 和 lat 列的位置表,并将我的 google key 放入 /config/initializers/geokit_config.rb 现在,虽然 @a 从 YahooGeocoder 给出了正确的结果(我也可以使用 GoogleGeocoder),但 @b 是一个空数组。我知道@a是使用Geokit gem生成的,@b是使用Geokit-rails插件生成的,所以问题肯定与插件有关。当我使用 @c=IpGeocoder.geocode('85.128.202.178') 时,我得到“success: false”...我在这里做错了什么?

I have installed both geokit gem and geokit-rails plugin. I configured the plugin as shown here: http://github.com/andre/geokit-rails . Then I generated a new model - Location, which looks like this:


class Location < ActiveRecord::Base
acts_as_mappable :default_units => :kms
end

and a controller:

class TestController < ApplicationController
include GeoKit::Geocoders
include GeoKit::Mappable
def test1
@a=Geokit::Geocoders::YahooGeocoder.geocode 'Kaohsiung City, Taiwan'
@b=Location.find(:all, :origin => '100 Spear st, San Francisco, CA', :within => 5)
end
end

I also set up a Locations table with both lng and lat columns in my database and put my google key in /config/initializers/geokit_config.rb
And right now, altough @a is giving me correct results from YahooGeocoder (I can use GoogleGeocoder as well), @b is an empty array. I know @a is generated using Geokit gem and @b using Geokit-rails plugin, so the problem is definitely related to the plugin. When I use @c=IpGeocoder.geocode('85.128.202.178') I get "success: false" ... What am I doing wrong here?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

萌︼了一个春 2024-08-25 11:52:23

您是否仔细检查过您的位置集合,以确保在该街道地址 5 公里范围内存在一个位置?如果您使用某个位置的显式纬度和经度进行类似的查找,会发生什么?

回复:@success=false,我对该 IP 也遇到同样的问题(使用 IpGeocoder 和 MultiGeocoder)。

>> @c=IpGeocoder.geocode('85.128.202.178')
=> #<Geokit::GeoLoc:0x1038df5f0 @success=false, @city="(Unknown City)", @province=nil, @street_address=nil, @lng=nil, @full_address=nil, @state=nil, @country_code="PL", @all=[#<Geokit::GeoLoc:0x1038df5f0 ...>], @lat=nil, @precision="unknown", @provider="hostip", @zip=nil>
>> @c=IpGeocoder.geocode('74.125.93.104')
=> #<Geokit::GeoLoc:0x1038d3c28 @success=true, @city="Manila", @province=nil, @street_address=nil, @lng=120.95, @full_address=nil, @state=nil, @country_code="PH", @all=[#<Geokit::GeoLoc:0x1038d3c28 ...>], @lat=14.5833, @precision="unknown", @provider="hostip", @zip=nil>

Have you double checked your Location collection to ensure there exists a location within 5 kilometers of that street address? What happens if you do a similar lookup with an explicit latitude and longitude of a Location?

Re: @success=false, I'm having the same trouble with that IP (using IpGeocoder and MultiGeocoder).

>> @c=IpGeocoder.geocode('85.128.202.178')
=> #<Geokit::GeoLoc:0x1038df5f0 @success=false, @city="(Unknown City)", @province=nil, @street_address=nil, @lng=nil, @full_address=nil, @state=nil, @country_code="PL", @all=[#<Geokit::GeoLoc:0x1038df5f0 ...>], @lat=nil, @precision="unknown", @provider="hostip", @zip=nil>
>> @c=IpGeocoder.geocode('74.125.93.104')
=> #<Geokit::GeoLoc:0x1038d3c28 @success=true, @city="Manila", @province=nil, @street_address=nil, @lng=120.95, @full_address=nil, @state=nil, @country_code="PH", @all=[#<Geokit::GeoLoc:0x1038d3c28 ...>], @lat=14.5833, @precision="unknown", @provider="hostip", @zip=nil>
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文