1

您好,我遇到了下一个奇怪的问题:我从 sql 服务器恢复坐标作为双精度,将其转换为浮点数,然后转换为 intE6。我设置了两张打印,一张在转换为 GeoPoint 之前,另一张在转换之后。好吧,第一个似乎打印好的值,但在第二个中,经度值的值失败了。

有一个例子:

float latitude = (float) json_data.getDouble("latitude");
float longitude = (float) json_data.getDouble("longitude");

Log.d("POINT",(int)(latitude*10E6)+" "+ (int)((longitude*10E6)));

GeoPoint p = new GeoPoint((int)(latitude*10E6), (int)(longitude*10E6));

Log.d("POINT", ""+p.getLatitudeE6()+" "+p.getLongitudeE6());

我在服务器中的值: -4.779396 , 37.878901

打印值:

-4779360 378789024

-4779360 18789024

谢谢你的帮助!

4

1 回答 1

4

而 10E6 使用 1E6,因此将代码更改为以下内容:

GeoPoint p = new GeoPoint((int)(latitude*1E6), (int)(longitude*1E6));

因为 10E6 将得到与输入相同的数字,而 1E6 将数字乘以 10 提高到 6 次方。

于 2012-11-16T08:54:52.473 回答