找到距离时,rails2红宝石地理编码器问题

时间:2013-12-19 14:38:29

标签: ruby rails-geocoder

我在我的rails2应用程序中使用ruby geocoder gem。当用户尝试注册时,我正在使用他的ip并使用地理编码器获取lat和long。接下来,获取用户输入的地址并获取纬度和经度。最后检查两者之间的距离。如果距离大于100,则添加错误。这发生在before_create回调中(根据客户要求)。但是这里的问题是地理编码器正在发送连续请求并且中断.Below是我的代码。

给出一些虚拟地址和ip用于测试目的。

  def validate_address_and_ip

    p "validate_address_and_ip"
    dup_addr = "Level 8, Umiya Business Bay Tower 1,Cessna Business Park, Maratahalli ORR,Sarjapur Ring Road, Kadubeesanahalli,Bangalore"
    ip_based_lat_lng = Geocoder.search("183.82.98.134").map{ |obj| [obj.latitude, obj.longitude] }.flatten#ip_address
    p "ip_based_lat_lng=", ip_based_lat_lng
    addr_results = Geocoder.search(dup_addr)#address.full_address
    addr_based_result = addr_results.first.geometry["location"]
    lat,lang = addr_based_result["lat"], addr_based_result["lng"]
    dist_in_miles = Geocoder::Calculations.distance_between(ip_based_lat_lng, [lat, lang]).round

    puts "***************#{dist_in_miles}*******************************"
    if 300 > 100
      p "*****************in if condition**********************"
      self.errors.add_to_base('zip code and IP mismatch.')
      return false
      puts "***************#{self.errors}*******************************"
    end
  end

Error: Numerical argument out of domain - sqrt

在日志中获取

“validate_address_and_ip” “ip_based_lat_lng =” [17.3753,78.4744] 的 * ** * ** 311 * ** * ** * ** * ** * ** < EM> “ ** * ** * * in if condition * ** * ** * **** ” “validate_address_and_ip” 地理编码API响应速度不够快(使用Geocoder.configure(:timeout =&gt; ...)来设置限制)。 “ip_based_lat_lng =” []

为什么多次调用该方法?谁能告诉我这个问题

0 个答案:

没有答案