我有一些在 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')#>
我欢迎任何有关上述内容的帮助。