RoR - плагин Geokit: почему Location.find возвращает мне пустой массив? (Location - модель, которая "acts_as_mappable") - PullRequest
1 голос
/ 19 января 2010

Я установил geokit gem и плагин geokit-rails. Я настроил плагин, как показано здесь: http://github.com/andre/geokit-rails. Затем я сгенерировал новую модель - Location, которая выглядит так:

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

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

Я также настроил таблицу Locations со столбцами lng и lat в моей базе данных и поместил свой ключ google в /config/initializers/geokit_config.rb И прямо сейчас, хотя @a дает мне правильные результаты от YahooGeocoder (я тоже могу использовать GoogleGeocoder), @b - пустой массив. Я знаю, что @a генерируется с использованием Geokit gem, а @b - с помощью плагина Geokit-rails, поэтому проблема определенно связана с плагином. Когда я использую @c=IpGeocoder.geocode('85.128.202.178'), я получаю "success: false" ... Что я здесь не так делаю?

1 Ответ

0 голосов
/ 20 апреля 2011

Вы дважды проверили свою коллекцию местоположений, чтобы убедиться, что она находится в 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>
...