Skip to content
This repository was archived by the owner on Sep 20, 2019. It is now read-only.

Commit 6ec8e05

Browse files
committed
Merge pull request #169 from realtymaps/dev/nmccready/issue_78_markers_updates
Issue 78 Markers Updates Programatically
2 parents bd0abcb + 41feaf2 commit 6ec8e05

17 files changed

+261
-59
lines changed

.gitignore

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@ Thumbs.db
66
# Project
77
# ===========
88
dist/ui-leaflet.pre.js
9+
dist/coverage/
910
js/angular-leaflet-directive-webpage.ngmin.js
1011

1112
# Related ecosystem

.npmignore

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -42,3 +42,5 @@ test
4242
Gruntfile.js
4343
package.json
4444
bower.json
45+
46+
dist/coverage/

bower.json

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -64,6 +64,7 @@
6464
"*.md",
6565
"Gruntfile.js",
6666
"package.json",
67-
"bower.json"
67+
"bower.json",
68+
"dist/coverage/"
6869
]
6970
}

dist/ui-leaflet.js

Lines changed: 33 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
/*!
2-
* ui-leaflet 1.0.0 2015-10-30
2+
* ui-leaflet 1.0.0 2015-11-02
33
* ui-leaflet - An AngularJS directive to easily interact with Leaflet maps
44
* git: https://github.com/angular-ui/ui-leaflet
55
*/
@@ -2266,7 +2266,6 @@ angular.module('ui-leaflet').service('leafletMarkersHelpers', ["$rootScope", "$t
22662266
errorHeader = leafletHelpers.errorHeader,
22672267
$log = leafletLogger;
22682268

2269-
22702269
var _string = function (marker) {
22712270
//this exists since JSON.stringify barfs on cyclic
22722271
var retStr = '';
@@ -2676,6 +2675,27 @@ angular.module('ui-leaflet').service('leafletMarkersHelpers', ["$rootScope", "$t
26762675
marker.setLatLng([markerData.lat, markerData.lng]);
26772676
}
26782677
};
2678+
2679+
var _getLayerModels = function (models, layerName){
2680+
if (!isDefined(models))
2681+
return;
2682+
if (layerName)
2683+
return models[layerName];
2684+
return models;
2685+
};
2686+
2687+
var _getModelFromModels = function (models, id, layerName){
2688+
if(!isDefined(models))
2689+
return;
2690+
if(!id){
2691+
$log.error(errorHeader + 'marker id missing in getMarker');
2692+
return;
2693+
}
2694+
if(layerName)
2695+
return models[layerName][id];
2696+
2697+
return models[id];
2698+
};
26792699
return {
26802700
resetMarkerGroup: _resetMarkerGroup,
26812701

@@ -2779,7 +2799,9 @@ angular.module('ui-leaflet').service('leafletMarkersHelpers', ["$rootScope", "$t
27792799
} , isDeepWatch);
27802800
},
27812801
string: _string,
2782-
log: _log
2802+
log: _log,
2803+
getModelFromModels : _getModelFromModels,
2804+
getLayerModels : _getLayerModels
27832805
};
27842806
}]);
27852807

@@ -4334,6 +4356,8 @@ angular.module('ui-leaflet').directive('markers',
43344356
addMarkerToGroup = leafletMarkersHelpers.addMarkerToGroup,
43354357
createMarker = leafletMarkersHelpers.createMarker,
43364358
deleteMarker = leafletMarkersHelpers.deleteMarker,
4359+
getModelFromModels = leafletMarkersHelpers.getModelFromModels,
4360+
getLayerModels = leafletMarkersHelpers.getLayerModels,
43374361
$it = leafletIterators,
43384362
_markersWatchOptions = leafletHelpers.watchOptions,
43394363
maybeWatch = leafletWatchHelpers.maybeWatch,
@@ -4461,7 +4485,7 @@ angular.module('ui-leaflet').directive('markers',
44614485
leafletMarkerEvents.bindEvents(mapId, marker, pathToMarker, model, leafletScope, layerName);
44624486
}
44634487
else {
4464-
var oldModel = isDefined(oldModel)? oldModels[newName] : undefined;
4488+
var oldModel = getModelFromModels(oldModels, newName, maybeLayerName);
44654489
updateMarker(model, oldModel, maybeLMarker, pathToMarker, leafletScope, layers, map);
44664490
}
44674491
}
@@ -4552,8 +4576,8 @@ angular.module('ui-leaflet').directive('markers',
45524576
var _clean = function(models, oldModels){
45534577
if(isNested) {
45544578
$it.each(models, function(markerToMaybeDel, layerName) {
4555-
var oldModel = isDefined(oldModel)? oldModels[layerName] : undefined;
4556-
_destroy(markerToMaybeDel, oldModel, leafletMarkers[layerName], map, layers);
4579+
var oldLayerModels = getLayerModels(oldModels, layerName);
4580+
_destroy(markerToMaybeDel, oldLayerModels, leafletMarkers[layerName], map, layers);
45574581
});
45584582
return;
45594583
}
@@ -4565,8 +4589,9 @@ angular.module('ui-leaflet').directive('markers',
45654589
var skips = null;
45664590
if(isNested) {
45674591
$it.each(models, function(markersToAdd, layerName) {
4568-
var oldModel = isDefined(oldModel)? oldModels[layerName] : undefined;
4569-
skips = _getNewModelsToSkipp(models[layerName], oldModel, leafletMarkers[layerName]);
4592+
var oldLayerModels = getLayerModels(oldModels, layerName);
4593+
var newlayerModels = getLayerModels(models, layerName);
4594+
skips = _getNewModelsToSkipp(newlayerModels, oldLayerModels, leafletMarkers[layerName]);
45704595
_addMarkers(attrs.id, markersToAdd, oldModels, map, layers, leafletMarkers, leafletScope,
45714596
watchOptions, layerName, skips);
45724597
});

dist/ui-leaflet.min.js

Lines changed: 3 additions & 3 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

dist/ui-leaflet.min.no-header.js

Lines changed: 3 additions & 3 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

dist/ui-leaflet_dev_mapped.js

Lines changed: 33 additions & 8 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

dist/ui-leaflet_dev_mapped.js.map

Lines changed: 1 addition & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.
Lines changed: 72 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,72 @@
1+
<!DOCTYPE html>
2+
<html ng-app="demoapp">
3+
<head>
4+
<meta name="viewport" content="width=device-width, initial-scale=1.0">
5+
<script src="../bower_components/angular/angular.min.js"></script>
6+
<script src="../bower_components/leaflet/dist/leaflet.js"></script>
7+
<script src="../bower_components/angular-simple-logger/dist/angular-simple-logger.js"></script>
8+
<script src="../dist/ui-leaflet_dev_mapped.js"></script>
9+
<link rel="stylesheet" href="../bower_components/leaflet/dist/leaflet.css"/>
10+
<meta name="viewport" content="width=device-width, initial-scale=1.0">
11+
<script>
12+
var app = angular.module('demoapp', ['ui-leaflet']);
13+
app.controller('MixedMOverlaysMarkersNestedNoWatchController', function ($scope, leafletData, $timeout, leafletLogger) {
14+
leafletLogger.currentLevel = leafletLogger.LEVELS.debug;
15+
var _clonedMarkers;
16+
$timeout(function () {
17+
//should do nothing (not watched) and only see one destroy
18+
_clonedMarkers = angular.copy($scope.markers);
19+
},1000);
20+
$timeout(function () {
21+
leafletData.getDirectiveControls().then(function (controls) {
22+
//move all markers by a few decimal points
23+
for (var markerName in _clonedMarkers) {
24+
var marker = _clonedMarkers[markerName];
25+
marker.lat += .05;
26+
}
27+
//force manual update
28+
controls.markers.create(_clonedMarkers ,$scope.markers);
29+
$scope.markers = _clonedMarkers;
30+
});
31+
}, 4000);
32+
angular.extend($scope, {
33+
markersWatchOptions: {
34+
doWatch: false,
35+
isDeep: false,
36+
individual: {
37+
doWatch: false,
38+
isDeep: false
39+
}
40+
},
41+
center: {
42+
lat: 42.20133,
43+
lng: 2.19110,
44+
zoom: 11
45+
},
46+
47+
markers: {
48+
m1: {
49+
lat: 42.20133,
50+
lng: 2.19110,
51+
message: "I'm a car"
52+
},
53+
m2: {
54+
lat: 42.21133,
55+
lng: 2.18110,
56+
message: "I'm a car"
57+
}
58+
}
59+
});
60+
});
61+
</script>
62+
</head>
63+
<body ng-controller="MixedMOverlaysMarkersNestedNoWatchController">
64+
<leaflet
65+
lf-center="center"
66+
markers="markers"
67+
markers-watch-options="markersWatchOptions"
68+
height="480px" width="100%">
69+
</leaflet>
70+
<h1>Overlays with nested markers no watchers example</h1>
71+
</body>
72+
</html>

examples/0605-mixed-overlays-markers-nested-no-watch-example.html

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -10,12 +10,12 @@
1010
<meta name="viewport" content="width=device-width, initial-scale=1.0">
1111
<script>
1212
var app = angular.module("demoapp", ['ui-leaflet']);
13-
app.controller('MixedMOverlaysMarkersNestedNoWatchController', function ($scope, leafletData, $timeout) {
13+
app.controller('MixedMOverlaysMarkersNestedNoWatchController', function ($scope, leafletData, $timeout, leafletLogger) {
14+
leafletLogger.currentLevel = leafletLogger.LEVELS.debug;
1415
var _clonedMarkers;
1516
$timeout(function () {
1617
//should do nothing (not watched) and only see one destroy
17-
_clonedMarkers = angular.extend({},$scope.markers);
18-
$scope.markers = {};
18+
_clonedMarkers = angular.copy($scope.markers);
1919
},1000);
2020
$timeout(function () {
2121
leafletData.getDirectiveControls().then(function (controls) {
@@ -28,8 +28,8 @@
2828
}
2929
}
3030
//force manual update
31+
controls.markers.create(_clonedMarkers ,$scope.markers);
3132
$scope.markers = _clonedMarkers;
32-
controls.markers.create($scope.markers);
3333
});
3434
}, 4000);
3535
angular.extend($scope, {

0 commit comments

Comments
 (0)