-2

私は Google Maps Api v3 を使用していますが、この質問は Grails のデフォルトのフォーマットに関連しています。私のドメインクラスには次のものがあります。

Float latitude;
Float longitude;

Google マップの正しい座標は次のとおりです。

36.5270612, -6.288596200000029

残念ながら、ショーでは、次のように表示されます。

365.270.624, -6.288.596.088.651.776

-- コードを表示:

<p id="latitude"><g:fieldValue  bean="${bestInstance}" field="latitude"/></p>

残念ながら、編集もあまり良くありません。それが示している:

3.65270624E8, -6.2885961E15

hereの次のソリューションは、3.65270624 E8形式のため、私を怖がらせます。

${bestInstance.latitude.encodeAsHTML()}

私はここで、四捨五入する必要があることを読みまし。次のコードが機能するはずです。

DecimalFormat decimalFormat = new DecimalFormat("0.000000");
decimalFormat.setRoundingMode(java.math.RoundingMode.DOWN);

ドキュメントから私が見つけた: formatNumber。次のコードを試しました(ただし、結果はショーと同じです):

<g:formatNumber format="0.000000" number="${bestInstance.latitude}" type="number" />

GSP ファイルで同じことを行うにはどうすればよいでしょうか。

4

2 に答える 2

0

通常、問題は入力が文字列であることです。値が数値なのか文字列なのかを特に注意深くチェックする必要があります。私の解決策:

1) 保存する前に座標の精度を下げます (そうしないと、奇妙なことが起こります!):

def create()
    (...)
    case 'POST':
        (...)
        params.putAt('latitude', reducePrecision(params.latitude))
        params.putAt('longitude', reducePrecision(params.longitude))
        (...)

private def reducePrecision(coordenate) {
    coordenate= Float.parseFloat(coordenate);
    return ( (float) ( (int) coordenate* 100000 ) / 100000 );       
}

2) show.gsp で、値を取得します (両方の方法でうまくいきました)。

<div id="latitude">${alojamientoInstance.latitude}</div>
<div id="longitude">${alojamientoInstance.longitude.encodeAsHTML()}</div>
于 2013-09-11T01:25:37.433 に答える
0

私はparamsから緯度と経度を渡しています。以下に示すように使用しています:

[ ${params.float('celat', defLat)}, ${params.float('celng', defLong)}]

defLatとdefLongはいくつかのデフォルト値であり、これはうまく機能します

于 2013-09-10T20:32:12.790 に答える