使用 API v3 在 angular 上添加动态标记

Add dynamic markers on angular using API v3

我试图在我的地图控制器中动态添加多个标记,但我无法获取 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
               });
           }

       }    

问题出在这里:

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

在指定 id 属性的地方,您已将其包装在数组 shorthand、[ ]

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

改成这样应该没问题:

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