标记没有出现在传单中

时间:2015-03-13 10:26:44

标签: angularjs leaflet markers angular-leaflet-directive

我正在尝试从数据库加载位置并将其分配给marker(lat,lng)。但是当我将新标记推送到我的标记数组时,标记没有出现在传单地图上。

我正在创建这样的标记。

$scope.markers = new Array();

$scope.alerts = Alert.query(function (){
        $scope.markers.push({
            lat: $scope.alerts[0].g_pos.coordinates[0],
            lng: $scope.alerts[0].g_pos.coordinates[1],
            message: "Added marker from query"
        });
        console.log($scope.markers[0].lat);
        console.log($scope.markers[0].lng);
    });

我能够在控制台中看到带有正确值的marker.lat和marker.lng。它只是没有出现在传单地图中。

我也尝试过使用watchCollection()但没有运气。

$scope.$watch('markers', function(newMarkers, oldMarkers) {
        if (newMarkers.length > 0) {
            console.log(newMarkers[0].lat);
            console.log(newMarkers[0].lng);
        }           
    }, true);

1 个答案:

答案 0 :(得分:0)

尝试使用$timeout包装您的代码。通过这种方式,AngularJS将了解您的更改。

$scope.markers = new Array();

$scope.alerts = Alert.query(function (){
    $timeout(function() {
        $scope.markers.push({
            lat: $scope.alerts[0].g_pos.coordinates[0],
            lng: $scope.alerts[0].g_pos.coordinates[1],
            message: "Added marker from query"
        });
        console.log($scope.markers[0].lat);
        console.log($scope.markers[0].lng);
    });
});

注意:您应该inject $timeout服务进入您的控制器。

以下是关于此问题的SO thread

此处还有an article,其中作者讨论了$apply()方法,这是另一种方法。