标记未出现在传单中
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()
的方法,这是另一种解决方法。
我正在尝试从数据库中加载位置并将其分配给标记(经纬度)。但是当我将新标记推送到我的标记数组时,标记没有出现在传单地图上。
我正在创建这样的标记。
$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()
的方法,这是另一种解决方法。