基于其他人代码的复制工程,我创建了以下代码(see fiddle here):
//INITIAL DATA:
var geometry.id = "Norway";
var bounds = [[-5, 40], [10, 50]];
// START CALCULATIONS
// WNES for West, North, East, South.
// WNES borders' geo-coordinates (decimal degrees)
var WNES = "",
WNES.item = geometry.id,
WNES.W = bounds[0][0],
WNES.N = bounds[1][1],
WNES.E = bounds[1][0],
WNES.S = bounds[0][1];
// Area's geo-dimensions (decimal degrees)
var WNES.geo_width = (WNES.E - WNES.W),
WNES.geo_height = (WNES.N - WNES.S);
// add a 5% padding on all WNES sides.
var WNESplus.W = WNES.W - WNES.geo_width * 0.05,
WNESplus.N = WNES.N + WNES.geo_height * 0.05,
WNESplus.E = WNES.E + WNES.geo_width * 0.05,
WNESplus.S = WNES.S - WNES.geo_height * 0.05,
WNESplus.geo_width = (WNESplus.E - WNESplus.W),
WNESplus.geo_height = (WNESplus.N - WNESplus.S);
// calcul center geo-coordinates
var WNES.lat_center = (WNES.S + WNES.N) / 2,
WNES.lon_center = (WNES.W + WNES.E) / 2;
//TEST:
console.log("Test" + WNESplus.N + " and " + WNESplus.geo_width);
这完全失败了。好像我做了作业,分号错误地使用了。 我的错误是什么,如何正确地进行探索?
答案 0 :(得分:2)
var
用于声明局部变量。用它来“声明”对象属性是不正确的。
你应该做的事情如下:
WNES.geo_width = (WNES.E - WNES.W);
WNES.geo_height = (WNES.N - WNES.S);
也就是说,您似乎正在尝试将属性分配给文字字符串。这不行。你可能应该从:
开始var WNES = {};
答案 1 :(得分:1)
您正在设置对象属性而不创建它。您不能在变量声明中使用点表示法。
尝试以下:
//INITIAL DATA:
var bounds = [[-5, 40], [10, 50]];
var geometry = {};
geometry.id = "Norway";
// START CALCULATIONS
// WNES borders' geo-coordinates (decimal degrees for West, North, East, South borders)
var WNES = {};
WNES.item = geometry.id,
WNES.W = bounds[0][0],
WNES.N = bounds[1][1],
WNES.E = bounds[1][0],
WNES.S = bounds[0][1];
// Area's geo-dimensions (decimal degrees)
WNES.geo_width = (WNES.E - WNES.W),
WNES.geo_height = (WNES.N - WNES.S);
// add a 5% padding on all WNES sides.
var WNESplus = {};
WNESplus.W = WNES.W - WNES.geo_width * 0.05,
WNESplus.N = WNES.N + WNES.geo_height * 0.05,
WNESplus.E = WNES.E + WNES.geo_width * 0.05,
WNESplus.S = WNES.S - WNES.geo_height * 0.05,
WNESplus.geo_width = (WNESplus.E - WNESplus.W),
WNESplus.geo_height = (WNESplus.N - WNESplus.S);
// calcul center geo-coordinates
WNES.lat_center = (WNES.S + WNES.N) / 2,
WNES.lon_center = (WNES.W + WNES.E) / 2;
console.log("Test"+ WNESplus.N +" and "+ WNESplus.geo_width);
<强> jsFiddle 强>
答案 2 :(得分:1)
您无法使用var指定对象的属性(geometry
,WNES
,WNESplus
)。您必须先将它们初始化为对象,然后分配属性:
//INITIAL DATA:
var bounds = [[-5, 40], [10, 50]];
var geometry = {};
geometry.id = "Norway";
// START CALCULATIONS
// WNES borders' geo-coordinates (decimal degrees for West, North, East, South borders)
var WNES = {};
WNES.item = geometry.id;
WNES.W = bounds[0][0];
WNES.N = bounds[1][1];
WNES.E = bounds[1][0];
WNES.S = bounds[0][1];
// Area's geo-dimensions (decimal degrees)
WNES.geo_width = (WNES.E - WNES.W);
WNES.geo_height = (WNES.N - WNES.S);
// add a 5% padding on all WNES sides.
var WNESplus = {};
WNESplus.W = WNES.W - WNES.geo_width * 0.05;
WNESplus.N = WNES.N + WNES.geo_height * 0.05;
WNESplus.E = WNES.E + WNES.geo_width * 0.05;
WNESplus.S = WNES.S - WNES.geo_height * 0.05;
WNESplus.geo_width = (WNESplus.E - WNESplus.W);
WNESplus.geo_height = (WNESplus.N - WNESplus.S);
// calcul center geo-coordinates
WNES.lat_center = (WNES.S + WNES.N) / 2;
WNES.lon_center = (WNES.W + WNES.E) / 2;
console.log("Test " + WNESplus.N + " and " + WNESplus.geo_width);
这是workign jsFiddle
答案 3 :(得分:1)
您不能以此格式声明变量作为对象。包含点表示法或对象的所有内容都应声明为var something = {}。作为一个例子:
此geometry.id = "Norway";
将100%失败。但你可以声明为:
var geometry = { id: "Norway"};
并为其他人按照相同的模板。