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());
};

На карту добавляются только метки, попадающие в видимую область