使用API​​ v3在角度上添加动态标记

Sta*_*two 4 javascript google-maps google-maps-api-3 google-maps-markers angularjs

我正在尝试在我的地图控制器中动态添加多个标记,但我无法获取id来迭代并显示我的所有标记,如何设置它以获取所有标记并正确显示它们,错误我得到的是:

标记模型没有id来分配子项.这是性能所必需的.请指定ID,或将ID重定向到其他键

ShowList.enderecoViagem(viagens_id).then(function (listview) {
            $scope.enderecos = listview;


            uiGmapGoogleMapApi.then(function (maps) {


                $scope.googlemap = {};
                $scope.map = {
                    center: {
                        latitude: $scope.enderecos[0].latitude,
                        longitude: $scope.enderecos[0].longitude
                    },
                    zoom: 14,
                    pan: 1,
                    options: $scope.mapOptions,
                    control: {},
                    events: {
                        tilesloaded: function (maps, eventName, args) {},
                        dragend: function (maps, eventName, args) {},
                        zoom_changed: function (maps, eventName, args) {}
                    }
                };
            });

            $scope.windowOptions = {
                show: false
            };



            $scope.title = "Window Title!";

            uiGmapIsReady.promise() // if no value is put in promise() it defaults to promise(1)
                .then(function (instances) {
                    console.log(instances[0].map); // get the current map
                })
                .then(function () {
                    $scope.addMarkerClickFunction($scope.markers);
                });

           for(var i = 0; i < $scope.enderecos.length; i++) {


               $scope.markers = [];

               $scope.markers.push({
                   id:[i],
                   latitude: $scope.enderecos[i].latitude,
                   longitude: $scope.enderecos[i].longitude
               });
           }

       }    
Run Code Online (Sandbox Code Playgroud)

dun*_*can 8

问题出在这里:

$scope.markers.push({
    id:[i],
    latitude: $scope.enderecos[i].latitude,
    longitude: $scope.enderecos[i].longitude
});
Run Code Online (Sandbox Code Playgroud)

在你指定id属性的地方,你已经将它包装在数组中,[ ]

这只有在您实际访问数组值时才有意义,例如您所在的位置enderecos[i].latitude.或者,如果您尝试将数组传递给id属性,但我很确定它会期待一个简单的字符串或整数.

只需将其更改为此,您应该没问题:

$scope.markers.push({
    id: i,
    latitude: $scope.enderecos[i].latitude,
    longitude: $scope.enderecos[i].longitude
});
Run Code Online (Sandbox Code Playgroud)