【问题标题】:Value returned in json message different than the one stored in databasejson 消息中返回的值与数据库中存储的值不同
【发布时间】:2012-12-11 21:54:11
【问题描述】:

我的应用程序在数据库中为用户存储了一些经纬度,这些用于查询 Maps Api。问题是我没有从 api 得到预期的结果。

来自 Api 的 json 响应,在某些部分包括用户的 lat/lng。我注意到的是,json 中的 lat/lng 与存储在我的数据库中的不同。 例如: 这些到我的数据库中的条目: 21.7694003 39.5593724 在json消息中返回如下: 21.75072 39.53207

这对我来说是一个主要问题,因为我试图使用谷歌方向 api 来获取两点之间的距离,而我得到的结果是错误的。

我在php中使用了file_get_contents()方法,我使用的url是这样的:

$url= 'http://maps.googleapis.com/maps/api/directions/json?origin='.$nlatend.','.$nlonend.'&destination='.$olatend.','.$olonend.'&region=gr&sensor=false&mode=walking';

其中 $nlonend、$nlatend 等是包含 lng/lng 坐标的变量。

谷歌可能会四舍五入这些坐标,标准程序,并且我的问题是由其他原因引起的,但我认为这是它的根源。 如果有人可以提供帮助,我将不胜感激。

【问题讨论】:

  • 你的数据库表的结构是什么?由于数据类型,您可能会丢失精度。
  • 好吧,我的经纬度字段是 varchar(50),我可以看到值正确存储在数据库中(我的意思是存储了正确的值)
  • 你到底是什么意思?我的变量从哪里获取它们的值?

标签: php android google-maps


【解决方案1】:

纬度和经度的小数点后 5 位相当于赤道约 10 米。随着纬度向两极移动,经度值变小(60° 时为 5.57 米)。参见Wiki

这几乎与GPS 系统一样准确。

Google Maps Geocoding 的结果精确到小数点后 7 位。(赤道 10 厘米)

如果您要求精确到小数点后 7 位。您需要将相关代码作为 EDIT 发布到您的问题中。

【讨论】:

  • 我遇到了一个糟糕的编码问题,导致我的变量出现问题,非常感谢答案..
  • Strachan 先生,我真的很想问你,如果你能看看这个:stackoverflow.com/questions/13794543/…
猜你喜欢
  • 1970-01-01
  • 2020-04-23
  • 2014-12-06
  • 1970-01-01
  • 2013-10-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-03-17
相关资源
最近更新 更多