【问题标题】:Rails Geocoder Returning Wrong CoordinatesRails 地理编码器返回错误的坐标
【发布时间】:2019-12-30 21:57:26
【问题描述】:

[1]

    def get_coords(address)
        coords = Geocoder.search(address)
        self.lat = coords[0].data["lat"].to_f
        self.lng = coords[0].data["lon"].to_f
    end

在前端,用户输入新的 TravelCenter、Restaurant、Lodging 或 CoffeeShop 的地址。在 Rails 中,我使用 Geocoder 来获取保存在数据库中的纬度和经度。然后回到前端,我为给定区域中的每个“地点”显示一个标记。

问题是,当以这种方式创建新条目时,坐标距离很远。第一个图像显示了 Rails 控制台中最新的 TravelCenter,图像左侧显示了它所代表的实际卡车停靠站的真实世界坐标。请注意,经度向左太远。在前端,应该在单词 Amarillo 的 EAST 侧的蓝点却在 WEST 侧。

所以基本上......什么给了?这个特定的 API 有什么问题吗?

此外,有没有更简单的方法来获取它们的坐标?我不知道为什么 Geocoder.search 返回一个数组以及为什么 lat 和 lng 被埋得这么深。

更新:左侧,预期位置。对,实际位置。结论:Ruby Geocoder 是垃圾。

【问题讨论】:

标签: ruby-on-rails api maps geocoder


【解决方案1】:

你可以试试下面这个方法,而且你不必从字符串转换为浮点数 看到这个reference if you need more detail

def get_coords(address)
    coords = Geocoder.search(address)
    # your result is in array coords.first.coordinates
    # first index is your lat and second is lng
    self.lat = coords.first.coordinates[0]
    self.lng = coords.first.coordinates[1]
end

【讨论】:

  • 这并不能改变坐标不正确的事实,我错了吗?
  • 根据我的经验,并非每个地址都可以转换为坐标,有时如果您拼错了除 google 数据库之外的地址,它会返回 nil,所以不是您/地理编码器错了,只是这么多地址名称的可能性,例如我当地城镇的某个地址使用 VI 而不是 6
  • 以及如何处理?,在我的软件中我放置了一些手动输入,所以如果地理编码器无法识别地址,用户可以使用我提供的 2 个文本框手动输入他们的坐标,然后用户可以通过谷歌地图查看他们的坐标
  • 只有在用户提交表单后才能知道Geocoder是否找不到地址
猜你喜欢
  • 2021-10-22
  • 2016-09-09
  • 1970-01-01
  • 2016-02-15
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-12-08
相关资源
最近更新 更多