Fix getVisibleParent when no parent is visible. Add tests for getVisibleParent. Fixes #265

This commit is contained in:
danzel
2013-10-23 16:58:12 +13:00
parent 1ac2d9ef68
commit df054cf884
4 changed files with 63 additions and 2 deletions
+1
View File
@@ -105,6 +105,7 @@ markers.on('clusterclick', function (a) {
### Getting the visible parent of a marker
If you have a marker in your MarkerClusterGroup and you want to get the visible parent of it (Either itself or a cluster it is contained in that is currently visible on the map).
This will return null if the marker and its parent clusters are not visible currently (they are not near the visible viewpoint)
```
var visibleOne = markerClusterGroup.getVisibleParent(myMarker);
console.log(visibleOne.getLatLng());
+1
View File
@@ -47,6 +47,7 @@
<script type="text/javascript" src="suites/eventsSpec.js"></script>
<script type="text/javascript" src="suites/getBoundsSpec.js"></script>
<script type="text/javascript" src="suites/getLayersSpec.js"></script>
<script type="text/javascript" src="suites/getVisibleParentSpec.js"></script>
<script type="text/javascript" src="suites/NonPointSpec.js"></script>
+59
View File
@@ -0,0 +1,59 @@
describe('getVisibleParent', function () {
var map, div;
beforeEach(function () {
div = document.createElement('div');
div.style.width = '200px';
div.style.height = '200px';
document.body.appendChild(div);
map = L.map(div, { maxZoom: 18 });
map.fitBounds(new L.LatLngBounds([
[1, 1],
[2, 2]
]));
});
afterEach(function () {
document.body.removeChild(div);
});
it('gets the marker if the marker is visible', function () {
var group = new L.MarkerClusterGroup();
var marker = new L.Marker([1.5, 1.5]);
group.addLayer(marker);
map.addLayer(group);
var vp = group.getVisibleParent(marker);
expect(vp).to.be(marker);
});
it('gets the visible cluster if it is clustered', function () {
var group = new L.MarkerClusterGroup();
var marker = new L.Marker([1.5, 1.5]);
var marker2 = new L.Marker([1.5, 1.5]);
group.addLayers([marker, marker2]);
map.addLayer(group);
var vp = group.getVisibleParent(marker);
expect(vp).to.be.a(L.MarkerCluster);
expect(vp._icon).to.not.be(null);
expect(vp._icon).to.not.be(undefined);
});
it('returns null if the marker and parents are all not visible', function () {
var group = new L.MarkerClusterGroup();
var marker = new L.Marker([5.5, 1.5]);
var marker2 = new L.Marker([5.5, 1.5]);
group.addLayers([marker, marker2]);
map.addLayer(group);
var vp = group.getVisibleParent(marker);
expect(vp).to.be(null);
});
});
+2 -2
View File
@@ -467,10 +467,10 @@ L.MarkerClusterGroup = L.FeatureGroup.extend({
getVisibleParent: function (marker) {
var vMarker = marker;
while (vMarker !== null && !vMarker._icon) {
while (vMarker && !vMarker._icon) {
vMarker = vMarker.__parent;
}
return vMarker;
return vMarker || null;
},
//Remove the given object from the given array