【问题标题】:Grails: format of coordinates are not shown correctlyGrails:坐标格式未正确显示
【发布时间】:2013-09-10 19:21:46
【问题描述】:

我使用的是 Google Maps Api v3,但这个问题与 Grails 默认格式有关。在我的域类中,我有:

Float latitude;
Float longitude;

谷歌地图的正确坐标是:

36.5270612, -6.288596200000029

不幸的是,在show中,它显示:

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()}

我读到here,我们应该向下舍入。以下代码应该可以工作

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

来自documentation I found out: formatNumber。我尝试了以下代码(但结果与显示相同):

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

我们如何在 GSP 文件中做同样的事情?

【问题讨论】:

    标签: grails


    【解决方案1】:

    我从参数传递纬度和对数,我正在使用它们,如下所示:

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

    其中 defLatdefLong 是一些默认值,效果很好

    【讨论】:

    • 我输入了:def a = params.float('232.2323')。 a 为空。如果你的意思是'celat',一个参数的名字,show 中唯一的参数是 id...
    • 是的,celat 和 celng 在我的示例中是参数
    【解决方案2】:

    问题通常是输入是一个字符串。我们必须特别仔细地检查一个值是数字还是字符串。我的解决方案:

    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>
    

    【讨论】:

    • 浮点数是危险的。您可能应该使用 BigDecimal 而不是 Float。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-03-30
    • 2019-10-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多