【问题标题】:Add dynamic markers on angular using API v3使用 API v3 在角度上添加动态标记
【发布时间】:2015-05-29 15:33:12
【问题描述】:

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

       }    

【问题讨论】:

标签: javascript angularjs google-maps google-maps-api-3 google-maps-markers


【解决方案1】:

问题出在这里:

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

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

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

只要改成这个就可以了:

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

【讨论】:

    猜你喜欢
    • 2011-12-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-03-06
    • 2014-02-14
    • 1970-01-01
    • 2011-03-09
    • 1970-01-01
    相关资源
    最近更新 更多