HTML:
<ya-map ya-zoom="8" ya-center="[37.75,55.73]" ya-after-init="afterInit($target)" ya-event-boundschange="mapBoundschange($event)"> <ya-geo-object ng-repeat="o in onMap" ya-source="o"></ya-geo-object> </ya-map>
javascript:
var searchInside = function(geoObjects, bounds){ var coord, results = []; for (var i = 0, ii = geoObjects.length; i < ii; i++) { coord = geoObjects[i].geometry.coordinates; if(coord[0]>bounds[0][0] && coord[0]<bounds[1][0] && coord[1]>bounds[0][1] && coord[1]<bounds[1][1]){ results.push(geoObjects[i]); } } return results; }; var points = [ {geometry:{ type: 'Point', coordinates: [37.75,55.73] }},{geometry:{ type: 'Point', coordinates: [37.45,55.10] }},{geometry:{ type: 'Point', coordinates: [37.35,55.25] }},{geometry:{ type: 'Point', coordinates: [67.35,55.25] }}]; $scope.afterInit=function(map){ $scope.onMap = searchInside(points, map.getBounds()); }; $scope.mapBoundschange=function(event){ var myMap = event.get('target'); $scope.onMap = searchInside(points, myMap.getBounds()); };
На карту добавляются только метки, попадающие в видимую область