1

こんにちは、次の奇妙な問題があります。SQL サーバーから座標を double として復元し、それを float に変換し、その後 intE6 に変換します。GeoPoint への変換前と変換後の 2 つのプリントを設定しました。1 つ目は適切な値を出力しているように見えますが、2 つ目は経度値の値が失敗しています。

例があります:

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 に答える