标记未出现在传单中

Markers not appearing in leaflet

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

我正在创建这样的标记。

$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);

尝试用 $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()的方法,这是另一种解决方法。