1

我有一些在 cfm 页面上使用的地理围栏脚本:

<cfscript> 
 function getDistance(loclat, loclon, fencelat, fencelon, units = 'kilometers')
 { 
    // earth's radius. Default is miles.
    var radius = 3959;
    if (arguments.units EQ 'kilometers' )
        radius = 6371;
    else if (arguments.units EQ 'meters')
        radius = 6371393;
    else if (arguments.units EQ 'feet')
        radius = 20903520;

    var toRad = pi() / 180;
    var dLat = (fencelat-loclat) * toRad;
    var dLon = (fencelon-loclon) * toRad; 
    var a = sin(dLat/2)^2 + cos(loclat * toRad) * cos(fencelat * toRad) * sin(dLon/2)^2; 
    var c = 2 * createObject("java","java.lang.Math").atan2(sqr(a), sqr(1-a));

    return radius * c;

 }
</cfscript>

然后,我查询我的地理围栏表和输出列表,以查找为特定设备设置了地理围栏的那些记录。当地理围栏查询返回多条记录时,cfoutput循环这些记录,并且作为cfoutput调用 js 函数中的代码,我收到一个错误,提示该函数在一个模板中被调用了 2 次。

我“假设”解决方案是将脚本函数本身放在函数名中,cfoutput并通过将每个函数名的 recordid 附加到函数名来使函数名唯一。这是正确的解决方案吗?

如果是,我的问题是如何将记录 ID 动态附加到 cfscript 中的函数名称?例如:

function getDistance#recid#(loclat, loclon, fencelat, fencelon, units = 'kilometers')

然后当我调用函数值时,输出

<cfif #fence_meter_radius# gt #getDistance(loclat, loclon, latitude, longitude, 'kilometers')#>

我欢迎任何有关上述内容的帮助。

4

0 回答 0