我正在使用AngularJS构建应用程序,我正在尝试在Google地图上绘制位置。我有一个JSON响应,如下所示:
locations: [{
id: 123
latlng: {
lat: 56.3
lon: -2.1
}
name: TestName
}]
我正在使用的指令(angular-google-maps)要求标记采用以下格式。我想要做的是创建一个只包含lat和lng值的新数组,如下所示。我还需要将lat和lng重命名为经度和纬度:
markers: [ {
latitude: 45,
longitude: -74
},{
latitude: 46,
longitude: -75
}]
我是编程新手,特别是在javascript中。我试图看看我是否可以在JSON响应中访问latlng对象,但是未定义。这是看起来像:
for (var latlng in $scope.locations) {
if ($scope.locations.hasOwnProperty(latlng))
{
var latitude = $scope.locations[latlng].lat;
}
console.log(latitude);
}
提前致谢!
答案 0 :(得分:1)
$scope.locations[latlng]
将您带到包含latlng键的对象,而不是该键引用的对象。由于迭代变量是数组的索引,因此您会发现使用反映此名称的名称会更加困惑,例如i
而不是latlng
:
for (var i in $scope.locations) {
…
var latitude = $scope.locations[i].latlng.lat;
…
}
在大多数JavaScript实现中,您有另一种选择:
$scope.locations.forEach(function(location) {
…
var latitude = location.latlng.lat;
…
});
(另请注意@ rtcherry的评论。)