你好,我有下一个奇怪的问题: 我将sql server中的坐标恢复为double,我将其转换为float,然后转换为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
感谢您的帮助!
答案 0 :(得分:4)
而不是10E6使用1E6,因此将代码更改为以下内容:
GeoPoint p = new GeoPoint((int)(latitude*1E6), (int)(longitude*1E6));
因为10E6将产生相同的数字作为输入,而1E6将数字乘以10加到功率6。 p>