问题
90%的人肯定这是我这边的安装错误,但我做不到self.factory并且试图访问lonlat给了我一个异常“nil:nilclass的未定义方法'point'”
我可以
设置lonlat使用:
mfactory = RGeo::ActiveRecord::SpatialFactoryStore.instance.factory(:geo_type => 'point')
self.lonlat = mfactory.point(long, lat)
self.save
这给了我一个在数据库中
0101000020E610000061C3D32B65965DC03657CD7344F64040
的值。我不能用:
self.lonlat = "POINT(#{long},#{lat})"
self.save
问题
我需要在模型中设置特定的内容吗?
最佳答案
I created a github issue with a less consise but more detailed explaination.
rgeos依赖于geos。此错误是rgeos无法加载geos的结果。
要检查这是否是问题所在:
$ rails c
> RGeo::Geos.supported?
=> false
要检查是否安装了GEOS,请执行以下操作:
geos-config --version
如果未安装GEOS:
brew install geos
如果安装了geos,请修复已安装的rgeo:
$ geos-config --prefix
/usr/local/Cellar/geos/3.5.0
$ gem install rgeo -- --with-geos-dir=/usr/local/Cellar/geos/3.5.0
现在应该正确安装并修复错误。您可以像我们上面所做的那样检查:
$ rails c
> RGeo::Geos.supported?
=> true
如果这不起作用,请卸载所有版本的geos和rgeo:
$ brew uninstall geos
$ gem uninstall rgeo
按照上述说明重新安装GEOS和RGEO。您的gem文件中应该有gem'rgeo',打包后,您应该将其视为输出之一:“使用本机扩展名安装rgeo 0.4.0”