帮助。
我使用google工作表,其中每行包含英国网格系统(东部和北部)中的一对坐标。这些对被转换为纬度和宽度。调用NEtoLL函数的经度 - 见下面的大纲。
目的是从一行中的相邻单元格中取出东,北对,并用纬度和纬度替换NEtoLL函数调用和同一行中的下一个单元格。经度值。几年前我用过这个,我相信一切都运转正常 - 但我会说那不是我!
问题...但是现在返回的值被放置在函数调用单元格中,而下一行中的单元格位于此下面。如果下一行包含对东,北对的NEtoLL函数调用,则无法覆盖此值。
它适用于最后一行,它正确地用纬度替换函数调用,而下面的单元格用经度替换。
如何返回值,使它们放在同一行的相邻单元格中。
非常感谢 保罗
function NEtoLL(east, north)
{
// converts NGR easting and nothing to lat, lon.
// input metres, output signed degrees
var nX = Number(north);
var eX = Number(east);
// ... lots of serious maths code (which I have removed) to convert from UK's Grid Ref System to Lat Long WGS84
var geo = transform(phip, lambdap, OSGB_AXIS, OSGB_ECCENTRIC, 0, WGS84_AXIS, WGS84_ECCENTRIC, 446.448, -125.157, 542.06, 0.1502, 0.247, 0.8421, -20.4894);
var res = new Array(2);
res[0] = geo.latitude * rad2deg;
res[1] = geo.longitude * rad2deg;
return res; // return(geo);
}
答案 0 :(得分:0)
有几种方法可以做到这一点。最简单,最快的可能是复制函数,所以你现在有2个几乎相同的函数输出纬度或经度之一。然后在不同的列中使用它们。
function NEtoLatitude(east,north) {
// your input assignments
// your lots of serious maths code
var res = geo.latitude * rad2deg;
return res
}
function NEtoLongitude(east,north){
// your same input assignments
// your same lots of serious maths code
var res = geo.longitude * rad2deg;
return res
}
您的问题是输出一个数组,并在列中向下填充。在此解决方案中,您将在一列中使用NEtoLatitude,在下一列中使用NEtoLongitude。每个仅输出单个期望值,因此相应的纬度和经度位于相同的预期行中。
答案 1 :(得分:0)
我想你想要一个多维数组。 这会将输出放在一个新列而不是一个新行中。
function example(input) {
res = [];//creates array
res[0] = [];//creates array in 1st position of res array
res[0][0]="first";//populates 1st position of nested array
res[0][1]="row";//populates 2nd position of nested array
//as an example the following would populate the next row down
res[1] = [];
res[1][0]= "new";
res[1][1]= "row";
return res;
}
这里是example()输出的屏幕截图 - 在A1中的功能(很遗憾,它不会让我发布图片。)
所以你需要两个项目都在数组的相同(第一)位置。
res = [];// equivalent to your var res = new Array(2);
res[0] = [];//creates array in 1st position of res array
res[0][0] = geo.latitude * rad2deg;
res[0][1] = geo.longitude * rad2deg;
return res;
Walling Rich
答案 2 :(得分:0)
非常感谢两位回复。两者都有效。我更喜欢Walling Rich的解决方案,因为它提供了对每个英国网格参考对的NEtoLL功能的单次调用,并正面解决了原始问题。
现在看看我是否可以将范围传递给NEtoLL并返回一系列值,因此只进行一次服务器端调用。
再次感谢。 保罗