我已经安装了geokit gem和geokit-rails插件。我按照此处所示配置了插件:http://github.com/andre/geokit-rails。然后我生成了一个新模型 - Location,如下所示:
class Location < ActiveRecord::Base
acts_as_mappable :default_units => :kms
end
和控制器:
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
我还在我的数据库中设置了一个包含lng和lat列的Locations表,并将我的google键放在/config/initializers/geokit_config.rb中
现在,尽管@a给了我来自YahooGeocoder的正确结果(我也可以使用GoogleGeocoder),@ b是一个空数组。我知道@a是使用Geokit gem和@b使用Geokit-rails插件生成的,所以问题肯定与插件有关。当我使用@c=IpGeocoder.geocode('85.128.202.178')
时,我得到“成功:错误”......我在这里做错了什么?
答案 0 :(得分:0)
您是否仔细检查过您的位置信息,以确保在该街道地址5公里范围内有位置?如果使用明确的位置纬度和经度进行类似的查找,会发生什么?
Re:@ 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>