0

我正在使用 AngularJS 构建一个应用程序,我正在尝试在谷歌地图上绘制位置。我有一个如下所示的 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);
    }

提前致谢!

4

1 回答 1

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 的评论。)

于 2013-06-30T22:07:05.180 回答