code: @Override
  	public void search(String crs, final VectorServerLayer layer, Geometry location, double buffer,
  			final FeatureMapFunction callback) {
  		SearchByLocationRequest request = new SearchByLocationRequest();
  		request.setBuffer(buffer);
  		request.addLayerWithFilter(layer.getServerLayerId(), layer.getServerLayerId(), layer.getFilter());
  		request.setLocation(location);
  		request.setSearchType(SearchLayerType.SEARCH_ALL_LAYERS.getValue());
  		request.setCrs(crs);
  		request.setFeatureIncludes(11);
  
  		GwtCommand command = new GwtCommand(SearchByLocationRequest.COMMAND);
  		command.setCommandRequest(request);
  		GeomajasServerExtension.getInstance().getCommandService().execute(command,
  				new AbstractCommandCallback<SearchByLocationResponse>() {
  
  					public void execute(SearchByLocationResponse response) {
  						for (List<org.geomajas.layer.feature.Feature> dtos : response.getFeatureMap().values()) {
  							List<Feature> features = new ArrayList<Feature>(dtos.size());
  							for (org.geomajas.layer.feature.Feature feature : dtos) {
  								features.add(create(feature, layer));
  							}
  							Map<FeaturesSupported, List<Feature>> map = new HashMap<FeaturesSupported, List<Feature>>();
  							map.put(layer, features);
  							callback.execute(map);
  						}
  					}
  				});
  	}
docs: ------------------------------------------------------------------------