Ruby   发布时间:2022-04-03  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了ruby-on-rails – 设置RGeo Point的单个坐标大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
@H_772_1@RGeo为POINT特征提供内置方法,例如getter方法lat()和lon()从POINT对象中提取纬度和经度值.不幸的是,这些不适合作为制定者.例如:
point = RGeo::Geographic.spherical_factory(:srid => 4326).point(3,5)     // => #<RGeo::Geographic::SphericalPointImpl:0x817e521c "POINT (3.0 5.0)">

我可以做这个:

point.lat      // => 5.0
point.lon      // => 3.0

但我做不到:

point.lat = 4    // => NoMethodError: undefined method `lat=' for #<RGeo::Geographic::SphericalPointImpl:0x00000104024770>

有关如何实现setter方法的任何建议?你会在模型中扩展还是扩展Feature类?

解决方法

我是RGeo的作者,所以你可以在此基础上虑这个答案的权威性.

简而言之,请避免这样做. RGeo对象故意没有setter方法,因为它们是不可变对象.这样它们可以被缓存,用作散列键,用于跨线程等.一些RGeo计算假设特征对象的值永远不会改变,因此进行这样的更改可能会产生意外和不可预测的后果.

如果您确实需要“已更改”值,请创建一个新对象.例如:

p1 = my_create_a_point()
p2 = p1.factory.point(p1.lon + 20.0,p2.lat)

大佬总结

以上是大佬教程为你收集整理的ruby-on-rails – 设置RGeo Point的单个坐标全部内容,希望文章能够帮你解决ruby-on-rails – 设置RGeo Point的单个坐标所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。