我在尝试将文本转换为geoloc坐标的数字时遇到问题。 我的模型是:一个具有ID等的站点,以及一个作为属性的点数组。我决定不在站点和点之间建立关系。
所以在我的代码中: 要点的声明如下:
points: Array<any> = [];
矩形的声明如下(数组数组):
rectangles: Array<Array<LatLngLiteral>> = [];
我正在网站上为特定的客户“循环”,并正在构建名为 rectangles 的数组以在Google地图上显示它。矩形由站点中来自数据库的数组组成。这里有两个站点,矩形Array是:
rectangles : [[
[
{"lat":44.841225,"lng":-0.580036},
{"lat":44.842236,"lng":-0.64696},
{"lat":44.805615,"lng":-0.63084}
],
[
{"lat":44.819868,"lng":-0.582811},
{"lat":44.853709,"lng":-0.483573},
{"lat":44.80696,"lng":-0.53299},
{"lat":44.80696,"lng":-0.629078}
]]]
检索它的代码是:
this.customerApi.getSites(this.currentUser.id)
.subscribe(response => {
this.sites = response;
this.rectangles.push(this.sites.map(s => s.points));
});
}
网站就像:
sites :
[
{
"siteName":"Site de Marseille",
"siteAdress1":"rue de blabla",
"siteAddress2":"string",
"siteCodPost":"13010",
"siteTown":"Marseille",
"points":
[
{"lat":44.841225,"lng":-0.580036},
{"lat":44.842236,"lng":-0.64696},
{"lat":44.805615,"lng":-0.63084}
],
"id":"5d0ce7c4a06b07213a87a753",
"companyId":"5cd430745304a21b9464a219",
"customerId":"5cd430c65304a21b9464a21a"`
}
,
{
"siteName":"Site de Bordeaux",
"siteAdress1":"rue de la Garonne",
"siteAddress2":"string",
"siteCodPost":"31000",
"siteTown":"Bordeau x",
"points":
[
{"lat":44.819868,"lng":-0.582811},
{"lat":44.853709,"lng":-0.483573},
{"lat":44.80696,"lng":-0.53299},
{"lat":44.80696,"lng":-0.629078}
],
"id":"5d0cf65fa06b07213a87a754",
"companyId":"5cd430745304a21b9464a219",
"customerId":"5cd430c65304a21b9464a21a"}]
我的 rectangles 数组的格式很好,因为另一个类似的数组,在代码中手写了值,并在Google Map上显示了矩形。除了方括号的数量...
我认为这来自数据格式。
所以我尝试了:points: Array<LatLngLiteral> = [];
,但是它不起作用。
我不知道在哪里可以使用parseFloat()方法进行尝试(如有必要)。
请问有人有帮助我的好主意吗?
答案 0 :(得分:0)
Bonjour
打字稿中没有float
类型,因此您可以创建一个检查任何字符串内容的函数,然后将其转换为浮点,如下所示:
getFloatValue(val) {
if (val.indexOf('.') > -1) {
try {
eval(val);
return parseFloat(val);
}
catch(error) {
console.log('error');
}
}
return val;
}
您可以将其用于对象的每个属性,如下所示:
let lat = getFloatValue(rectangle[0].lat);